Results based on ICS additional correction

All results were performed againd adding ICS as counforonder. ICS is a yes/no defined as those samples with 1 in at least one of both, QMA_YN_ICS_Einzelinhalator or QMA_YN_SystemicSteroids. OCS was taken directly from QMA_YN_SystemicSteroids without modifications
Author

Juan Henao

Published

September 3, 2024

1 Data Preprocessing

Code
prefix.plots <- "C:/Users/delza/Documents/juan/240821_paper_V3/figures/"
prefix.tables <- "C:/Users/delza/Documents/juan/240821_paper_V3/tables/"

meta <- read.csv("C:/Users/delza/Documents/juan/230328_input_data/meta.csv", sep=";", header=TRUE,stringsAsFactors = FALSE)
meta2 <- meta[meta["type"] == "measured",]
rownames(meta2)<-meta2$ID_pseudo

df_port <- read.table("C:/Users/delza/Documents/juan/230328_input_data/20220803_plate_normalized20220803_data_donwshift_imputed.csv", sep=" ", header=TRUE, stringsAsFactors = FALSE)

to.remove <- colnames(meta[,9:27])[!colnames(meta[,9:27]) %in% colnames(df_port)]
meta <- meta[,which(!colnames(meta) %in% to.remove)]

meta2$D_ASTHMA_SEVERITYGRADE_SCREEN[meta2$D_ASTHMA_SEVERITYGRADE_SCREEN == 9]<-0
meta2[rownames(meta2),colnames(df_port)] <- df_port[rownames(meta2),colnames(df_port)]

meta2$year <- as.factor(meta2$year)
meta2$plate_new <- as.factor(meta2$plate_new)
meta2$D_SEX<-as.factor(meta2$D_SEX)
meta2$D_ASTHMA_SEVERITYGRADE_SCREEN <-as.factor(meta2$D_ASTHMA_SEVERITYGRADE_SCREEN)
meta2$D_SmokingStatus<-as.factor(meta2$D_SmokingStatus)

2 Differential expression analysis

Code
meta2$ICS_YN <- ifelse(meta2$QMA_YN_ICS_Einzelinhalator == 1|meta2$QMA_YN_SystemicSteroids == 1,1,0) %>% as.factor()
meta2$OCS_YN <- meta2$QMA_YN_SystemicSteroids %>% as.factor()

design <- model.matrix(~0+as.factor(meta2$D_YN_ASTHMA)+as.factor(meta2$year)+meta2$D_AGE+as.factor(meta2$D_SEX)+as.factor(meta2$D_SmokingStatus)+as.factor(meta2$OCS_YN)+as.factor(meta2$ICS_YN))
colnames(design) <- c('Control','Asthma','Year2018','Age','Sex1','Smoke2','Smoke3','OCS','ICS')

fit <- lmFit(t(meta2[,colnames(df_port)]), design)
cont <- makeContrasts("Asthma-Control", levels = design)

fit2 <- contrasts.fit(fit,cont)

fit3 <- eBayes(fit2,robust = T)

DE <- topTable(fit3,coef = 1, adjust = "BH", number = Inf, sort = "p")

rmarkdown::paged_table(DE)
Code
to.box.plot <- data.frame()

for (i in colnames(df_port)) {
  to.bind <-  data.frame(rep(i,nrow(meta2)),
                         meta2[,i],
                         as.factor(meta2$D_YN_ASTHMA),row.names = NULL)
  colnames(to.bind) <- c('Protein','Expression','Condition')
  to.box.plot <- rbind(to.box.plot,to.bind)
}

Figure 1 Abundances per cytokine per condition (asthma/healthy)

Code
ggplot(data = to.box.plot, aes(x = Protein, y = Expression)) + 
  geom_boxplot(aes(fill = Condition), width = 0.8)  + theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1, size=20), axis.text.y = element_text(size=20), axis.title=element_text(size=22,face="bold"), legend.title = element_text(size=18), legend.text = element_text(size=15))+
  ylab(expression('log'[2]*'(Expression)'))+ theme_bw() +
  scale_fill_manual(name= "Condition",labels =c("healthy", "asthma"), values=c("#eff3ff","#08519c" ))
Figure 1: Abundances per cytokine splited by condition (asthma/healthy)
Code
design <- model.matrix(~0+meta2$D_ASTHMA_SEVERITYGRADE_SCREEN+as.factor(meta2$year)+meta2$D_AGE+as.factor(meta2$D_SEX)+as.factor(meta2$D_SmokingStatus)+as.factor(meta2$OCS_YN)+as.factor(meta2$ICS_YN))
colnames(design) <- c('Healthy','Mild','Moderate',"Severe",'Year2018','Age','Sex1','Smoke2','Smoke3','OCS','ICS')

fit <- lmFit(t(meta2[,colnames(df_port)]), design)
cont <- makeContrasts("Mild-Healthy",
                      "Moderate-Healthy",
                      "Severe-Healthy",
                      "Moderate-Mild",
                      "Severe-Mild",
                      "Severe-Moderate", levels = design)

fit2 <- contrasts.fit(fit,cont)

fit3 <- eBayes(fit2,robust = T)

DE1 <- topTable(fit3,coef = 1, adjust = "BH", number = Inf, sort = "p")
DE2 <- topTable(fit3,coef = 2, adjust = "BH", number = Inf, sort = "p")
DE3 <- topTable(fit3,coef = 3, adjust = "BH", number = Inf, sort = "p")
DE4 <- topTable(fit3,coef = 4, adjust = "BH", number = Inf, sort = "p")
DE5 <- topTable(fit3,coef = 5, adjust = "BH", number = Inf, sort = "p")
DE6 <- topTable(fit3,coef = 6, adjust = "BH", number = Inf, sort = "p")

cat("Healthy vs Mild\n")
Healthy vs Mild
Code
rmarkdown::paged_table(DE1)
Code
cat("Healthy vs Moderate\n")
Healthy vs Moderate
Code
rmarkdown::paged_table(DE2)
Code
cat("Healthy vs Severe\n")
Healthy vs Severe
Code
rmarkdown::paged_table(DE3)
Code
cat("Mild vs Moderate\n")
Mild vs Moderate
Code
rmarkdown::paged_table(DE4)
Code
cat("Mild vs Severe\n")
Mild vs Severe
Code
rmarkdown::paged_table(DE5)
Code
cat("Moderate vs Severe\n")
Moderate vs Severe
Code
rmarkdown::paged_table(DE6)
Code
to.box.plot <- data.frame()

for (i in colnames(df_port)) {
  to.bind <-  data.frame(rep(i,nrow(meta2)),
                         meta2[,i],
                         as.factor(meta2$D_ASTHMA_SEVERITYGRADE_SCREEN),row.names = NULL)
  colnames(to.bind) <- c('Protein','Expression','Condition')
  to.box.plot <- rbind(to.box.plot,to.bind)
}

Figure 2 Cytokine abundances per asthma severity

Code
ggplot(data = to.box.plot, aes(x = Protein, y = Expression)) + 
  geom_boxplot(aes(fill = Condition), width = 0.8) + theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1, size=20), axis.text.y = element_text(size=20), axis.title=element_text(size=22,face="bold"), legend.title = element_text(size=18), legend.text = element_text(size=15))+
  ylab(expression('log'[2]*'(Expression)'))+
  xlab(expression('Protein'))+ theme_bw() +
  scale_fill_manual(name= "Severity grade",labels =c("healthy", "mild", "moderate", "severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd" ))
Figure 2: Abundances per cytokine splited by asthma severity

Figure 3 Abundances for deferentially expressed cytokines when healthy and mild donors are compared

Code
ggplot(data = subset(to.box.plot, (Protein =="IL.33" |Protein =="IL.13"|Protein =="G.CSF"|Protein =="IL.4"|Protein =="TNF.alpha"|Protein =="IL.17"|Protein =="IFN.g"|Protein =="IL.8")& (Condition ==0|Condition ==1)), aes(x = Protein, y = Expression)) + 
  geom_boxplot(aes(fill = Condition), width = 0.4) + theme(axis.text.x = element_text(size=20), axis.text.y = element_text(size=20), axis.title=element_text(size=22,face="bold"), legend.title = element_text(size=18), legend.text = element_text(size=15))+
  ylab(expression('log'[2]*'(Expression)'))+ theme_bw() + ylim(c(-20,15)) +
  scale_fill_manual(name= "Severity grade",labels =c("Healthy", "Mild"), values= c("#eff3ff", "#bdd7e7")) +
  geom_signif(y_position=c(10), xmin=c("IL.33"), xmax=c("IL.33"),annotation=c("**"), tip_length=0,textsize = 8,linetype = "blank") +
  geom_signif(y_position=c(10), xmin=c("IL.13"), xmax=c("IL.13"),annotation=c("*"), tip_length=0,textsize = 8,linetype = "blank") +
  geom_signif(y_position=c(10), xmin=c("G.CSF"), xmax=c("G.CSF"),annotation=c("*"), tip_length=0,textsize = 8,linetype = "blank") +
  geom_signif(y_position=c(10), xmin=c("IL.4"), xmax=c("IL.4"),annotation=c("*"), tip_length=0,textsize = 8,linetype = "blank") +
  geom_signif(y_position=c(10), xmin=c("TNF.alpha"), xmax=c("TNF.alpha"),annotation=c("*"), tip_length=0,textsize = 8,linetype = "blank") +
  geom_signif(y_position=c(10), xmin=c("IL.17"), xmax=c("IL.17"),annotation=c("*"), tip_length=0,textsize = 8,linetype = "blank") +
  geom_signif(y_position=c(10), xmin=c("IFN.g"), xmax=c("IFN.g"),annotation=c("."), tip_length=0,textsize = 8,linetype = "blank") +
  geom_signif(y_position=c(10), xmin=c("IL.8"), xmax=c("IL.8"),annotation=c("."), tip_length=0,textsize = 8,linetype = "blank")
Figure 3: Significant cytokines for comparison healthy vs mild (\(. \le\) 0.1, \(* \le\) 0.05, \(** \le\) 0.005)

Figure 4 Abundances for deferentially expressed cytokines when healthy and moderate donors are compared

Code
ggplot(data = subset(to.box.plot, (Protein =="IL.17" |Protein =="TNF.alpha"|Protein =="IL.4"|Protein =="IL.8"|Protein =="IFN.g"|Protein =="IL.10")& (Condition ==0|Condition ==2)), aes(x = Protein, y = Expression)) + ylim(c(-22,15)) +
  geom_boxplot(aes(fill = Condition), width = 0.4) + theme(axis.text.x = element_text(size=20), axis.text.y = element_text(size=20), axis.title=element_text(size=22,face="bold"), legend.title = element_text(size=18), legend.text = element_text(size=15))+
  ylab(expression('log'[2]*'(Expression)'))+ theme_bw() +
  scale_fill_manual(name= "Severity grade",labels =c("Healthy", "Moderate"), values= c("#eff3ff", "#6baed6")) +
  geom_signif(y_position=c(12), xmin=c("IL.17"), xmax=c("IL.17"),annotation=c("*"), tip_length=0,textsize = 8,linetype = "blank") +
  geom_signif(y_position=c(12), xmin=c("TNF.alpha"), xmax=c("TNF.alpha"),annotation=c("*"), tip_length=0,textsize = 8,linetype = "blank") +
  geom_signif(y_position=c(12), xmin=c("IL.4"), xmax=c("IL.4"),annotation=c("*"), tip_length=0,textsize = 8,linetype = "blank") +
  geom_signif(y_position=c(12), xmin=c("IL.8"), xmax=c("IL.8"),annotation=c("*"), tip_length=0,textsize = 8,linetype = "blank") +
  geom_signif(y_position=c(12), xmin=c("IFN.g"), xmax=c("IFN.g"),annotation=c("."), tip_length=0,textsize = 8,linetype = "blank") +
  geom_signif(y_position=c(12), xmin=c("IL.10"), xmax=c("IL.10"),annotation=c("."), tip_length=0,textsize = 8,linetype = "blank") 
Figure 4: Significant cytokines for comparison healthy vs moderate (\(. \le\) 0.1, \(* \le\) 0.05, \(** \le\) 0.005)

Figure 5 Abundances for deferentially expressed cytokines when healthy and severe donors are compared

Code
ggplot(data = subset(to.box.plot, (Protein =="IL.1alpha" |Protein =="IL.33")& (Condition ==0|Condition ==3)), aes(x = Protein, y = Expression)) + 
  geom_boxplot(aes(fill = Condition), width = 0.4) + theme(axis.text.x = element_text(size=20), axis.text.y = element_text(size=20), axis.title=element_text(size=22,face="bold"), legend.title = element_text(size=18), legend.text = element_text(size=15))+
  ylab(expression('log'[2]*'(Expression)'))+ theme_bw() + ylim(c(-15,7.5)) +
  scale_fill_manual(name= "Severity grade",labels =c("Healthy", "Severe"), values= c("#eff3ff", "#3182bd")) +
  geom_signif(y_position=c(5), xmin=c("IL.1alpha"), xmax=c("IL.1alpha"),annotation=c("**"), tip_length=0,textsize = 8,linetype = "blank") +
  geom_signif(y_position=c(5), xmin=c("IL.33"), xmax=c("IL.33"),annotation=c("*"), tip_length=0,textsize = 8,linetype = "blank")
Figure 5: Significant cytokines for comparison healthy vs severe (\(. \le\) 0.1, \(* \le\) 0.05, \(** \le\) 0.005)

Figure 6 Abundances for deferentially expressed cytokines when mild and moderate donors are compared

Code
ggplot(data = subset(to.box.plot, (Protein =="Periostin" |Protein =="IL.33"|Protein =="G.CSF")& (Condition ==1|Condition ==2)), aes(x = Protein, y = Expression)) + 
  geom_boxplot(aes(fill = Condition), width = 0.4) + theme(axis.text.x = element_text(size=20), axis.text.y = element_text(size=20), axis.title=element_text(size=22,face="bold"), legend.title = element_text(size=18), legend.text = element_text(size=15))+
  ylab(expression('log'[2]*'(Expression)'))+ theme_bw() + ylim(c(-20,15)) +
  scale_fill_manual(name= "Severity grade",labels =c("Mild", "Moderate"), values= c("#bdd7e7", "#6baed6")) +
  geom_signif(y_position=c(10), xmin=c("Periostin"), xmax=c("Periostin"),annotation=c("*"), tip_length=0,textsize = 8,linetype = "blank") +
  geom_signif(y_position=c(10), xmin=c("IL.33"), xmax=c("IL.33"),annotation=c("*"), tip_length=0,textsize = 8,linetype = "blank") +
  geom_signif(y_position=c(10), xmin=c("G.CSF"), xmax=c("G.CSF"),annotation=c("."), tip_length=0,textsize = 8,linetype = "blank")
Figure 6: Significant cytokines for comparison mild vs moderate (\(. \le\) 0.1, \(* \le\) 0.05, \(** \le\) 0.005)

Figure 7 Abundances for deferentially expressed cytokines when mild and severe donors are compared

Code
ggplot(data = subset(to.box.plot, (Protein =="G.CSF")& (Condition ==1|Condition ==3)), aes(x = Protein, y = Expression)) + 
  geom_boxplot(aes(fill = Condition), width = 0.4) + theme(axis.text.x = element_text(size=20), axis.text.y = element_text(size=20), axis.title=element_text(size=22,face="bold"), legend.title = element_text(size=18), legend.text = element_text(size=15))+ ylim(c(-15,7.5)) +
  ylab(expression('log'[2]*'(Expression)'))+ theme_bw() +
  scale_fill_manual(name= "Severity grade",labels =c("Mild", "Severe"), values= c("#bdd7e7", "#3182bd")) +
  geom_signif(y_position=c(5), xmin=c("G.CSF"), xmax=c("G.CSF"),annotation=c("*"), tip_length=0,textsize = 8,linetype = "blank")
Figure 7: Significant cytokines for comparison mild vs severe (\(. \le\) 0.1, \(* \le\) 0.05, \(** \le\) 0.005)

3 Regression models

3.1 Cell composition

Code
sputum_cell_prop_col<-c("MS_DIFF_MAKROS", "MS_DIFF_NEUT", "MS_DIFF_EOS", "MS_DIFF_LYM",
                    "MS_DIFF_FLIMMEREPITHEL", "MS_DIFF_MONOS")

meta2$Y <-  DR_data(mutate_all(meta2[sputum_cell_prop_col], function(x) as.numeric(as.character(x))))

res2<-DirichReg(Y ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24
                + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha +
                D_SEX+D_AGE + D_SmokingStatus+year+OCS_YN + ICS_YN,  meta2, control=list(iterlim = 50000))

summary(res2)
Call:
DirichReg(formula = Y ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + IL.13 + IL.17 +
IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5 + IL.8 + Periostin + SCGB1A.1
+ TNF.alpha + D_SEX + D_AGE + D_SmokingStatus + year + OCS_YN + ICS_YN, data =
meta2, control = list(iterlim = 50000))

Standardized Residuals:
                            Min       1Q   Median       3Q      Max
MS_DIFF_MAKROS          -2.6018  -0.9574   0.0268   1.1970   4.6351
MS_DIFF_NEUT            -3.2044  -0.9789   0.2159   1.4374   3.6776
MS_DIFF_EOS             -1.0182  -0.6665  -0.5233  -0.0991  10.0346
MS_DIFF_LYM             -0.7787  -0.5941  -0.5196  -0.3972   1.0421
MS_DIFF_FLIMMEREPITHEL  -0.9297  -0.6646  -0.5199  -0.2715   8.3048
MS_DIFF_MONOS           -0.5783  -0.5162  -0.4935  -0.4702   0.3009

------------------------------------------------------------------
Beta-Coefficients for variable no. 1: MS_DIFF_MAKROS
                   Estimate Std. Error z value Pr(>|z|)    
(Intercept)       1.250e+00  8.848e-01   1.413 0.157661    
Eotaxin.3         1.233e-02  4.434e-02   0.278 0.780949    
G.CSF            -1.087e-01  2.802e-02  -3.880 0.000104 ***
IFN.g            -1.510e-01  6.578e-02  -2.295 0.021718 *  
IL.10            -1.302e-02  4.360e-02  -0.299 0.765203    
IL.13            -2.085e-02  3.969e-02  -0.525 0.599432    
IL.17             3.115e-01  6.430e-02   4.844 1.28e-06 ***
IL.1alpha         9.617e-02  6.431e-02   1.495 0.134815    
IL.1F7            8.754e-02  6.824e-02   1.283 0.199563    
IL.24             2.558e-02  2.848e-02   0.898 0.369245    
IL.33            -1.489e-03  3.064e-02  -0.049 0.961238    
IL.4             -5.581e-02  6.468e-02  -0.863 0.388223    
IL.5             -6.678e-03  4.058e-02  -0.165 0.869293    
IL.8              9.573e-02  6.267e-02   1.527 0.126641    
Periostin        -5.495e-05  2.710e-02  -0.002 0.998382    
SCGB1A.1         -1.316e-01  6.239e-02  -2.109 0.034967 *  
TNF.alpha        -1.226e-01  8.611e-02  -1.424 0.154420    
D_SEX1            7.239e-02  1.418e-01   0.511 0.609671    
D_AGE             9.983e-03  4.776e-03   2.090 0.036606 *  
D_SmokingStatus2  5.730e-01  2.804e-01   2.043 0.041012 *  
D_SmokingStatus3  1.625e-01  1.368e-01   1.188 0.234932    
year2018         -1.633e-01  4.831e-01  -0.338 0.735362    
OCS_YN1          -1.194e+00  2.282e-01  -5.233 1.67e-07 ***
ICS_YN1           1.417e-01  1.729e-01   0.819 0.412621    
------------------------------------------------------------------
Beta-Coefficients for variable no. 2: MS_DIFF_NEUT
                   Estimate Std. Error z value Pr(>|z|)    
(Intercept)       1.440e+00  1.003e+00   1.435 0.151274    
Eotaxin.3         1.346e-02  5.767e-02   0.233 0.815399    
G.CSF            -9.137e-02  2.984e-02  -3.062 0.002196 ** 
IFN.g            -1.807e-02  5.762e-02  -0.314 0.753758    
IL.10            -6.185e-02  5.178e-02  -1.195 0.232281    
IL.13            -6.368e-02  4.939e-02  -1.289 0.197232    
IL.17             2.765e-01  6.564e-02   4.212 2.53e-05 ***
IL.1alpha        -7.648e-03  6.675e-02  -0.115 0.908773    
IL.1F7            8.281e-02  6.725e-02   1.231 0.218186    
IL.24            -5.656e-05  2.620e-02  -0.002 0.998278    
IL.33            -1.329e-02  3.005e-02  -0.442 0.658225    
IL.4             -1.017e-01  6.243e-02  -1.629 0.103371    
IL.5             -8.199e-03  4.460e-02  -0.184 0.854155    
IL.8             -2.262e-02  6.671e-02  -0.339 0.734566    
Periostin         5.814e-02  2.895e-02   2.008 0.044647 *  
SCGB1A.1         -1.796e-01  6.427e-02  -2.795 0.005196 ** 
TNF.alpha         4.740e-02  6.238e-02   0.760 0.447298    
D_SEX1            1.609e-01  1.337e-01   1.204 0.228592    
D_AGE             2.911e-02  4.839e-03   6.016 1.79e-09 ***
D_SmokingStatus2  8.635e-01  2.542e-01   3.397 0.000682 ***
D_SmokingStatus3  3.259e-01  1.399e-01   2.328 0.019888 *  
year2018         -3.441e-01  4.453e-01  -0.773 0.439664    
OCS_YN1          -7.960e-01  2.312e-01  -3.442 0.000577 ***
ICS_YN1           8.198e-02  1.718e-01   0.477 0.633299    
------------------------------------------------------------------
Beta-Coefficients for variable no. 3: MS_DIFF_EOS
                  Estimate Std. Error z value Pr(>|z|)   
(Intercept)      -1.572923   1.003211  -1.568  0.11691   
Eotaxin.3         0.048399   0.055773   0.868  0.38551   
G.CSF            -0.030413   0.029481  -1.032  0.30225   
IFN.g            -0.042128   0.056855  -0.741  0.45871   
IL.10            -0.020494   0.048983  -0.418  0.67566   
IL.13            -0.033904   0.042496  -0.798  0.42497   
IL.17             0.045539   0.068626   0.664  0.50696   
IL.1alpha        -0.034963   0.069717  -0.501  0.61602   
IL.1F7           -0.015208   0.058838  -0.258  0.79604   
IL.24             0.033914   0.025765   1.316  0.18808   
IL.33            -0.036879   0.029362  -1.256  0.20912   
IL.4              0.047263   0.062608   0.755  0.45030   
IL.5              0.081148   0.040431   2.007  0.04474 * 
IL.8              0.007538   0.060432   0.125  0.90073   
Periostin         0.040090   0.027660   1.449  0.14723   
SCGB1A.1         -0.003151   0.060780  -0.052  0.95865   
TNF.alpha        -0.070661   0.074498  -0.948  0.34288   
D_SEX1            0.250404   0.143557   1.744  0.08111 . 
D_AGE             0.012672   0.004775   2.654  0.00796 **
D_SmokingStatus2  0.014474   0.277513   0.052  0.95840   
D_SmokingStatus3 -0.021103   0.149540  -0.141  0.88777   
year2018          0.175325   0.451365   0.388  0.69770   
OCS_YN1           0.241866   0.238322   1.015  0.31017   
ICS_YN1           0.286930   0.188398   1.523  0.12776   
------------------------------------------------------------------
Beta-Coefficients for variable no. 4: MS_DIFF_LYM
                  Estimate Std. Error z value Pr(>|z|)  
(Intercept)      -0.780561   0.999786  -0.781   0.4350  
Eotaxin.3         0.008848   0.047951   0.185   0.8536  
G.CSF            -0.055566   0.028543  -1.947   0.0516 .
IFN.g            -0.058433   0.058173  -1.004   0.3152  
IL.10             0.002908   0.051070   0.057   0.9546  
IL.13            -0.005027   0.042716  -0.118   0.9063  
IL.17             0.099496   0.064667   1.539   0.1239  
IL.1alpha         0.057260   0.066305   0.864   0.3878  
IL.1F7            0.014899   0.063202   0.236   0.8136  
IL.24             0.016719   0.026457   0.632   0.5274  
IL.33             0.014972   0.029710   0.504   0.6143  
IL.4             -0.021615   0.060638  -0.356   0.7215  
IL.5             -0.002948   0.039114  -0.075   0.9399  
IL.8              0.025811   0.063346   0.407   0.6837  
Periostin         0.012786   0.027808   0.460   0.6457  
SCGB1A.1         -0.053664   0.054388  -0.987   0.3238  
TNF.alpha        -0.017445   0.071074  -0.245   0.8061  
D_SEX1            0.099599   0.143406   0.695   0.4874  
D_AGE             0.005059   0.004931   1.026   0.3049  
D_SmokingStatus2  0.236415   0.273466   0.865   0.3873  
D_SmokingStatus3  0.132626   0.145976   0.909   0.3636  
year2018          0.067164   0.449697   0.149   0.8813  
OCS_YN1          -0.565135   0.238345  -2.371   0.0177 *
ICS_YN1           0.062640   0.184070   0.340   0.7336  
------------------------------------------------------------------
Beta-Coefficients for variable no. 5: MS_DIFF_FLIMMEREPITHEL
                  Estimate Std. Error z value Pr(>|z|)   
(Intercept)       0.321226   0.975809   0.329  0.74201   
Eotaxin.3        -0.007882   0.049298  -0.160  0.87297   
G.CSF            -0.050240   0.027863  -1.803  0.07137 . 
IFN.g            -0.030120   0.061808  -0.487  0.62604   
IL.10            -0.049756   0.051313  -0.970  0.33222   
IL.13            -0.062413   0.044248  -1.411  0.15838   
IL.17             0.091847   0.067588   1.359  0.17417   
IL.1alpha         0.014244   0.062857   0.227  0.82072   
IL.1F7            0.097710   0.060840   1.606  0.10827   
IL.24             0.002244   0.027329   0.082  0.93457   
IL.33            -0.003002   0.030550  -0.098  0.92172   
IL.4              0.048105   0.058181   0.827  0.40834   
IL.5              0.012473   0.039526   0.316  0.75233   
IL.8              0.071490   0.063619   1.124  0.26113   
Periostin         0.021975   0.028085   0.782  0.43395   
SCGB1A.1         -0.200708   0.067543  -2.972  0.00296 **
TNF.alpha        -0.032402   0.071673  -0.452  0.65121   
D_SEX1           -0.049423   0.142074  -0.348  0.72794   
D_AGE             0.003020   0.004879   0.619  0.53594   
D_SmokingStatus2  0.348276   0.268488   1.297  0.19457   
D_SmokingStatus3  0.078763   0.147494   0.534  0.59334   
year2018         -0.673577   0.420709  -1.601  0.10937   
OCS_YN1          -0.485025   0.237010  -2.046  0.04071 * 
ICS_YN1           0.187766   0.182060   1.031  0.30238   
------------------------------------------------------------------
Beta-Coefficients for variable no. 6: MS_DIFF_MONOS
                   Estimate Std. Error z value Pr(>|z|)
(Intercept)      -1.3047733  0.9894401  -1.319    0.187
Eotaxin.3         0.0092964  0.0509996   0.182    0.855
G.CSF            -0.0278187  0.0283357  -0.982    0.326
IFN.g            -0.0479487  0.0580056  -0.827    0.408
IL.10            -0.0171257  0.0528083  -0.324    0.746
IL.13            -0.0248470  0.0442530  -0.561    0.574
IL.17             0.0786861  0.0663714   1.186    0.236
IL.1alpha         0.0162334  0.0666584   0.244    0.808
IL.1F7            0.0172852  0.0624693   0.277    0.782
IL.24             0.0105911  0.0260301   0.407    0.684
IL.33            -0.0025097  0.0290596  -0.086    0.931
IL.4              0.0096077  0.0596312   0.161    0.872
IL.5              0.0004564  0.0395978   0.012    0.991
IL.8             -0.0001476  0.0624500  -0.002    0.998
Periostin         0.0157065  0.0283739   0.554    0.580
SCGB1A.1         -0.0351780  0.0497029  -0.708    0.479
TNF.alpha        -0.0088539  0.0713000  -0.124    0.901
D_SEX1            0.0551632  0.1425880   0.387    0.699
D_AGE             0.0044199  0.0049737   0.889    0.374
D_SmokingStatus2  0.3071021  0.2745913   1.118    0.263
D_SmokingStatus3  0.0613135  0.1500121   0.409    0.683
year2018         -0.2198768  0.4418686  -0.498    0.619
OCS_YN1          -0.2378883  0.2377150  -1.001    0.317
ICS_YN1           0.0243821  0.1858070   0.131    0.896
------------------------------------------------------------------
Significance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Log-likelihood: 2662 on 144 df (721 BFGS + 2 NR Iterations)
AIC: -5035, BIC: -4540
Number of Observations: 230
Link: Log
Parametrization: common
Code
#{sink(paste(prefix.tables,"_CellTypeComposition_cytokines.txt", sep=""))
#print(summary(res2))
#sink()}

confint(res2,level = 0.95)

95% Confidence Intervals (original form)

Variable: MS_DIFF_MAKROS
                    2.5%    Est.   97.5%
(Intercept)       -0.484   1.250   2.984
Eotaxin.3         -0.075   0.012   0.099
G.CSF             -0.164  -0.109  -0.054
IFN.g             -0.280  -0.151  -0.022
IL.10             -0.098  -0.013   0.072
IL.13             -0.099  -0.021   0.057
IL.17              0.185   0.311   0.437
IL.1alpha         -0.030   0.096   0.222
IL.1F7            -0.046   0.088   0.221
IL.24             -0.030   0.026   0.081
IL.33             -0.062  -0.001   0.059
IL.4              -0.183  -0.056   0.071
IL.5              -0.086  -0.007   0.073
IL.8              -0.027   0.096   0.219
Periostin         -0.053   0.000   0.053
SCGB1A.1          -0.254  -0.132  -0.009
TNF.alpha         -0.291  -0.123   0.046
D_SEX1            -0.206   0.072   0.350
D_AGE              0.001   0.010   0.019
D_SmokingStatus2   0.023   0.573   1.123
D_SmokingStatus3  -0.106   0.162   0.431
year2018          -1.110  -0.163   0.784
OCS_YN1           -1.642  -1.194  -0.747
ICS_YN1           -0.197   0.142   0.481

Variable: MS_DIFF_NEUT
                    2.5%    Est.   97.5%
(Intercept)       -0.527   1.440   3.407
Eotaxin.3         -0.100   0.013   0.126
G.CSF             -0.150  -0.091  -0.033
IFN.g             -0.131  -0.018   0.095
IL.10             -0.163  -0.062   0.040
IL.13             -0.160  -0.064   0.033
IL.17              0.148   0.276   0.405
IL.1alpha         -0.138  -0.008   0.123
IL.1F7            -0.049   0.083   0.215
IL.24             -0.051   0.000   0.051
IL.33             -0.072  -0.013   0.046
IL.4              -0.224  -0.102   0.021
IL.5              -0.096  -0.008   0.079
IL.8              -0.153  -0.023   0.108
Periostin          0.001   0.058   0.115
SCGB1A.1          -0.306  -0.180  -0.054
TNF.alpha         -0.075   0.047   0.170
D_SEX1            -0.101   0.161   0.423
D_AGE              0.020   0.029   0.039
D_SmokingStatus2   0.365   0.864   1.362
D_SmokingStatus3   0.052   0.326   0.600
year2018          -1.217  -0.344   0.529
OCS_YN1           -1.249  -0.796  -0.343
ICS_YN1           -0.255   0.082   0.419

Variable: MS_DIFF_EOS
                    2.5%    Est.  97.5%
(Intercept)       -3.539  -1.573  0.393
Eotaxin.3         -0.061   0.048  0.158
G.CSF             -0.088  -0.030  0.027
IFN.g             -0.154  -0.042  0.069
IL.10             -0.116  -0.020  0.076
IL.13             -0.117  -0.034  0.049
IL.17             -0.089   0.046  0.180
IL.1alpha         -0.172  -0.035  0.102
IL.1F7            -0.131  -0.015  0.100
IL.24             -0.017   0.034  0.084
IL.33             -0.094  -0.037  0.021
IL.4              -0.075   0.047  0.170
IL.5               0.002   0.081  0.160
IL.8              -0.111   0.008  0.126
Periostin         -0.014   0.040  0.094
SCGB1A.1          -0.122  -0.003  0.116
TNF.alpha         -0.217  -0.071  0.075
D_SEX1            -0.031   0.250  0.532
D_AGE              0.003   0.013  0.022
D_SmokingStatus2  -0.529   0.014  0.558
D_SmokingStatus3  -0.314  -0.021  0.272
year2018          -0.709   0.175  1.060
OCS_YN1           -0.225   0.242  0.709
ICS_YN1           -0.082   0.287  0.656

Variable: MS_DIFF_LYM
                    2.5%    Est.   97.5%
(Intercept)       -2.740  -0.781   1.179
Eotaxin.3         -0.085   0.009   0.103
G.CSF             -0.112  -0.056   0.000
IFN.g             -0.172  -0.058   0.056
IL.10             -0.097   0.003   0.103
IL.13             -0.089  -0.005   0.079
IL.17             -0.027   0.099   0.226
IL.1alpha         -0.073   0.057   0.187
IL.1F7            -0.109   0.015   0.139
IL.24             -0.035   0.017   0.069
IL.33             -0.043   0.015   0.073
IL.4              -0.140  -0.022   0.097
IL.5              -0.080  -0.003   0.074
IL.8              -0.098   0.026   0.150
Periostin         -0.042   0.013   0.067
SCGB1A.1          -0.160  -0.054   0.053
TNF.alpha         -0.157  -0.017   0.122
D_SEX1            -0.181   0.100   0.381
D_AGE             -0.005   0.005   0.015
D_SmokingStatus2  -0.300   0.236   0.772
D_SmokingStatus3  -0.153   0.133   0.419
year2018          -0.814   0.067   0.949
OCS_YN1           -1.032  -0.565  -0.098
ICS_YN1           -0.298   0.063   0.423

Variable: MS_DIFF_FLIMMEREPITHEL
                    2.5%    Est.   97.5%
(Intercept)       -1.591   0.321   2.234
Eotaxin.3         -0.105  -0.008   0.089
G.CSF             -0.105  -0.050   0.004
IFN.g             -0.151  -0.030   0.091
IL.10             -0.150  -0.050   0.051
IL.13             -0.149  -0.062   0.024
IL.17             -0.041   0.092   0.224
IL.1alpha         -0.109   0.014   0.137
IL.1F7            -0.022   0.098   0.217
IL.24             -0.051   0.002   0.056
IL.33             -0.063  -0.003   0.057
IL.4              -0.066   0.048   0.162
IL.5              -0.065   0.012   0.090
IL.8              -0.053   0.071   0.196
Periostin         -0.033   0.022   0.077
SCGB1A.1          -0.333  -0.201  -0.068
TNF.alpha         -0.173  -0.032   0.108
D_SEX1            -0.328  -0.049   0.229
D_AGE             -0.007   0.003   0.013
D_SmokingStatus2  -0.178   0.348   0.875
D_SmokingStatus3  -0.210   0.079   0.368
year2018          -1.498  -0.674   0.151
OCS_YN1           -0.950  -0.485  -0.020
ICS_YN1           -0.169   0.188   0.545

Variable: MS_DIFF_MONOS
                    2.5%    Est.  97.5%
(Intercept)       -3.244  -1.305  0.634
Eotaxin.3         -0.091   0.009  0.109
G.CSF             -0.083  -0.028  0.028
IFN.g             -0.162  -0.048  0.066
IL.10             -0.121  -0.017  0.086
IL.13             -0.112  -0.025  0.062
IL.17             -0.051   0.079  0.209
IL.1alpha         -0.114   0.016  0.147
IL.1F7            -0.105   0.017  0.140
IL.24             -0.040   0.011  0.062
IL.33             -0.059  -0.003  0.054
IL.4              -0.107   0.010  0.126
IL.5              -0.077   0.000  0.078
IL.8              -0.123   0.000  0.122
Periostin         -0.040   0.016  0.071
SCGB1A.1          -0.133  -0.035  0.062
TNF.alpha         -0.149  -0.009  0.131
D_SEX1            -0.224   0.055  0.335
D_AGE             -0.005   0.004  0.014
D_SmokingStatus2  -0.231   0.307  0.845
D_SmokingStatus3  -0.233   0.061  0.355
year2018          -1.086  -0.220  0.646
OCS_YN1           -0.704  -0.238  0.228
ICS_YN1           -0.340   0.024  0.389
Code
cat("Calculate McFadden's pseudo-R2: ",1 - as.numeric(logLik(res2)) / as.numeric(logLik(update(res2,.~1))))
Calculate McFadden's pseudo-R2:  -0.02085802
Code
dirig.meta <- subset(meta2, D_ASTHMA_SEVERITYGRADE_SCREEN==1)
dirig.meta$Y <- DR_data(mutate_all(dirig.meta[sputum_cell_prop_col], function(x) as.numeric(as.character(x))))

res2<-DirichReg(Y ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24
                + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha +
                D_SEX+D_AGE + D_SmokingStatus+year + ICS_YN,
                data=dirig.meta, control=list(iterlim = 50000))

summary(res2)
confint(res2,level = 0.95)
Code
dirig.meta <- subset(meta2, D_ASTHMA_SEVERITYGRADE_SCREEN==2)
dirig.meta$Y <- DR_data(mutate_all(dirig.meta[sputum_cell_prop_col], function(x) as.numeric(as.character(x))))

res2<-DirichReg(Y ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24
                + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha +
                D_SEX+D_AGE + D_SmokingStatus+year+OCS_YN + ICS_YN,
                data=dirig.meta, control=list(iterlim = 50000))

summary(res2)
confint(res2,level = 0.95)
Code
dirig.meta <- subset(meta2, D_ASTHMA_SEVERITYGRADE_SCREEN==3)
dirig.meta$Y <- DR_data(mutate_all(dirig.meta[sputum_cell_prop_col], function(x) as.numeric(as.character(x))))

res2<-DirichReg(Y ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24
                + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha +
                D_SEX+D_AGE + D_SmokingStatus+year+OCS_YN + ICS_YN,
                data=dirig.meta, control=list(iterlim = 50000))

summary(res2)
confint(res2,level = 0.95)
Code
res<-DirichReg(Y ~ D_ASTHMA_SEVERITYGRADE_SCREEN 
               +year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,  meta2)

summary(res)
Call:
DirichReg(formula = Y ~ D_ASTHMA_SEVERITYGRADE_SCREEN + year + D_SEX + D_AGE +
D_SmokingStatus + OCS_YN + ICS_YN, data = meta2)

Standardized Residuals:
                            Min       1Q   Median       3Q     Max
MS_DIFF_MAKROS          -2.6330  -0.9645   0.0101   1.2187  4.3810
MS_DIFF_NEUT            -3.2221  -1.0575   0.3360   1.5083  3.4533
MS_DIFF_EOS             -0.9978  -0.6436  -0.5091  -0.1114  9.2500
MS_DIFF_LYM             -0.7546  -0.5917  -0.5193  -0.3955  0.6687
MS_DIFF_FLIMMEREPITHEL  -0.8748  -0.6610  -0.5180  -0.2649  8.2496
MS_DIFF_MONOS           -0.5517  -0.5092  -0.4984  -0.4730  0.1739

------------------------------------------------------------------
Beta-Coefficients for variable no. 1: MS_DIFF_MAKROS
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     1.179836   0.291640   4.046 5.22e-05 ***
D_ASTHMA_SEVERITYGRADE_SCREEN1 -0.151206   0.208305  -0.726  0.46791    
D_ASTHMA_SEVERITYGRADE_SCREEN2 -0.526792   0.186247  -2.828  0.00468 ** 
D_ASTHMA_SEVERITYGRADE_SCREEN3 -0.889376   0.198044  -4.491 7.10e-06 ***
year2018                       -0.163614   0.128882  -1.269  0.20427    
D_SEX1                          0.141697   0.119235   1.188  0.23468    
D_AGE                           0.006812   0.004482   1.520  0.12859    
D_SmokingStatus2                0.243204   0.237235   1.025  0.30529    
D_SmokingStatus3                0.081627   0.133505   0.611  0.54092    
OCS_YN1                        -0.587293   0.250835  -2.341  0.01921 *  
ICS_YN1                         0.003325   0.169325   0.020  0.98433    
------------------------------------------------------------------
Beta-Coefficients for variable no. 2: MS_DIFF_NEUT
                               Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     0.11507    0.25857   0.445  0.65631    
D_ASTHMA_SEVERITYGRADE_SCREEN1  0.15183    0.19724   0.770  0.44142    
D_ASTHMA_SEVERITYGRADE_SCREEN2 -0.20343    0.17969  -1.132  0.25758    
D_ASTHMA_SEVERITYGRADE_SCREEN3 -0.45725    0.19777  -2.312  0.02078 *  
year2018                       -0.01017    0.12617  -0.081  0.93575    
D_SEX1                          0.25677    0.11712   2.192  0.02835 *  
D_AGE                           0.02472    0.00474   5.215 1.84e-07 ***
D_SmokingStatus2                0.66023    0.22445   2.942  0.00327 ** 
D_SmokingStatus3                0.16567    0.13332   1.243  0.21400    
OCS_YN1                        -0.43549    0.25901  -1.681  0.09269 .  
ICS_YN1                        -0.08664    0.17112  -0.506  0.61263    
------------------------------------------------------------------
Beta-Coefficients for variable no. 3: MS_DIFF_EOS
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                    -1.887439   0.287053  -6.575 4.86e-11 ***
D_ASTHMA_SEVERITYGRADE_SCREEN1  0.397023   0.215732   1.840  0.06572 .  
D_ASTHMA_SEVERITYGRADE_SCREEN2  0.502697   0.196655   2.556  0.01058 *  
D_ASTHMA_SEVERITYGRADE_SCREEN3  0.646884   0.211689   3.056  0.00224 ** 
year2018                        0.108722   0.140440   0.774  0.43884    
D_SEX1                          0.164613   0.132629   1.241  0.21455    
D_AGE                           0.010293   0.004692   2.193  0.02827 *  
D_SmokingStatus2               -0.044034   0.259754  -0.170  0.86539    
D_SmokingStatus3               -0.035723   0.143383  -0.249  0.80325    
OCS_YN1                         0.021482   0.284193   0.076  0.93974    
ICS_YN1                         0.089169   0.188991   0.472  0.63706    
------------------------------------------------------------------
Beta-Coefficients for variable no. 4: MS_DIFF_LYM
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                    -0.937418   0.284674  -3.293 0.000991 ***
D_ASTHMA_SEVERITYGRADE_SCREEN1 -0.168580   0.212090  -0.795 0.426699    
D_ASTHMA_SEVERITYGRADE_SCREEN2 -0.284385   0.193233  -1.472 0.141096    
D_ASTHMA_SEVERITYGRADE_SCREEN3 -0.430550   0.211723  -2.034 0.041997 *  
year2018                       -0.066340   0.139085  -0.477 0.633383    
D_SEX1                          0.123850   0.130260   0.951 0.341709    
D_AGE                           0.004073   0.004796   0.849 0.395736    
D_SmokingStatus2                0.058898   0.256577   0.230 0.818438    
D_SmokingStatus3                0.096224   0.143002   0.673 0.501018    
OCS_YN1                        -0.300942   0.270068  -1.114 0.265143    
ICS_YN1                         0.013513   0.187269   0.072 0.942477    
------------------------------------------------------------------
Beta-Coefficients for variable no. 5: MS_DIFF_FLIMMEREPITHEL
                                Estimate Std. Error z value Pr(>|z|)  
(Intercept)                    -0.721014   0.286697  -2.515   0.0119 *
D_ASTHMA_SEVERITYGRADE_SCREEN1  0.301041   0.212331   1.418   0.1563  
D_ASTHMA_SEVERITYGRADE_SCREEN2 -0.002054   0.193818  -0.011   0.9915  
D_ASTHMA_SEVERITYGRADE_SCREEN3 -0.087811   0.208950  -0.420   0.6743  
year2018                       -0.148233   0.139108  -1.066   0.2866  
D_SEX1                         -0.036309   0.128503  -0.283   0.7775  
D_AGE                           0.002834   0.004763   0.595   0.5519  
D_SmokingStatus2                0.203500   0.253638   0.802   0.4224  
D_SmokingStatus3                0.006765   0.142763   0.047   0.9622  
OCS_YN1                        -0.231775   0.267799  -0.865   0.3868  
ICS_YN1                         0.025106   0.184951   0.136   0.8920  
------------------------------------------------------------------
Beta-Coefficients for variable no. 6: MS_DIFF_MONOS
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                    -1.562663   0.287456  -5.436 5.44e-08 ***
D_ASTHMA_SEVERITYGRADE_SCREEN1  0.059199   0.213701   0.277    0.782    
D_ASTHMA_SEVERITYGRADE_SCREEN2  0.010268   0.196642   0.052    0.958    
D_ASTHMA_SEVERITYGRADE_SCREEN3 -0.090947   0.214919  -0.423    0.672    
year2018                       -0.098408   0.143343  -0.687    0.492    
D_SEX1                          0.056575   0.131580   0.430    0.667    
D_AGE                           0.003405   0.004872   0.699    0.485    
D_SmokingStatus2                0.202988   0.261703   0.776    0.438    
D_SmokingStatus3                0.017357   0.146337   0.119    0.906    
OCS_YN1                        -0.111853   0.273738  -0.409    0.683    
ICS_YN1                        -0.036011   0.190597  -0.189    0.850    
------------------------------------------------------------------
Significance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Log-likelihood: 2624 on 66 df (252 BFGS + 2 NR Iterations)
AIC: -5117, BIC: -4890
Number of Observations: 230
Link: Log
Parametrization: common
Code
#{sink(paste(prefix.tables,"_CellTypeComposition_asthma_severity.txt", sep=""))
#print(summary(res))
#sink()}

confint(res2,level = 0.95)

95% Confidence Intervals (original form)

Variable: MS_DIFF_MAKROS
                    2.5%    Est.   97.5%
(Intercept)       -0.484   1.250   2.984
Eotaxin.3         -0.075   0.012   0.099
G.CSF             -0.164  -0.109  -0.054
IFN.g             -0.280  -0.151  -0.022
IL.10             -0.098  -0.013   0.072
IL.13             -0.099  -0.021   0.057
IL.17              0.185   0.311   0.437
IL.1alpha         -0.030   0.096   0.222
IL.1F7            -0.046   0.088   0.221
IL.24             -0.030   0.026   0.081
IL.33             -0.062  -0.001   0.059
IL.4              -0.183  -0.056   0.071
IL.5              -0.086  -0.007   0.073
IL.8              -0.027   0.096   0.219
Periostin         -0.053   0.000   0.053
SCGB1A.1          -0.254  -0.132  -0.009
TNF.alpha         -0.291  -0.123   0.046
D_SEX1            -0.206   0.072   0.350
D_AGE              0.001   0.010   0.019
D_SmokingStatus2   0.023   0.573   1.123
D_SmokingStatus3  -0.106   0.162   0.431
year2018          -1.110  -0.163   0.784
OCS_YN1           -1.642  -1.194  -0.747
ICS_YN1           -0.197   0.142   0.481

Variable: MS_DIFF_NEUT
                    2.5%    Est.   97.5%
(Intercept)       -0.527   1.440   3.407
Eotaxin.3         -0.100   0.013   0.126
G.CSF             -0.150  -0.091  -0.033
IFN.g             -0.131  -0.018   0.095
IL.10             -0.163  -0.062   0.040
IL.13             -0.160  -0.064   0.033
IL.17              0.148   0.276   0.405
IL.1alpha         -0.138  -0.008   0.123
IL.1F7            -0.049   0.083   0.215
IL.24             -0.051   0.000   0.051
IL.33             -0.072  -0.013   0.046
IL.4              -0.224  -0.102   0.021
IL.5              -0.096  -0.008   0.079
IL.8              -0.153  -0.023   0.108
Periostin          0.001   0.058   0.115
SCGB1A.1          -0.306  -0.180  -0.054
TNF.alpha         -0.075   0.047   0.170
D_SEX1            -0.101   0.161   0.423
D_AGE              0.020   0.029   0.039
D_SmokingStatus2   0.365   0.864   1.362
D_SmokingStatus3   0.052   0.326   0.600
year2018          -1.217  -0.344   0.529
OCS_YN1           -1.249  -0.796  -0.343
ICS_YN1           -0.255   0.082   0.419

Variable: MS_DIFF_EOS
                    2.5%    Est.  97.5%
(Intercept)       -3.539  -1.573  0.393
Eotaxin.3         -0.061   0.048  0.158
G.CSF             -0.088  -0.030  0.027
IFN.g             -0.154  -0.042  0.069
IL.10             -0.116  -0.020  0.076
IL.13             -0.117  -0.034  0.049
IL.17             -0.089   0.046  0.180
IL.1alpha         -0.172  -0.035  0.102
IL.1F7            -0.131  -0.015  0.100
IL.24             -0.017   0.034  0.084
IL.33             -0.094  -0.037  0.021
IL.4              -0.075   0.047  0.170
IL.5               0.002   0.081  0.160
IL.8              -0.111   0.008  0.126
Periostin         -0.014   0.040  0.094
SCGB1A.1          -0.122  -0.003  0.116
TNF.alpha         -0.217  -0.071  0.075
D_SEX1            -0.031   0.250  0.532
D_AGE              0.003   0.013  0.022
D_SmokingStatus2  -0.529   0.014  0.558
D_SmokingStatus3  -0.314  -0.021  0.272
year2018          -0.709   0.175  1.060
OCS_YN1           -0.225   0.242  0.709
ICS_YN1           -0.082   0.287  0.656

Variable: MS_DIFF_LYM
                    2.5%    Est.   97.5%
(Intercept)       -2.740  -0.781   1.179
Eotaxin.3         -0.085   0.009   0.103
G.CSF             -0.112  -0.056   0.000
IFN.g             -0.172  -0.058   0.056
IL.10             -0.097   0.003   0.103
IL.13             -0.089  -0.005   0.079
IL.17             -0.027   0.099   0.226
IL.1alpha         -0.073   0.057   0.187
IL.1F7            -0.109   0.015   0.139
IL.24             -0.035   0.017   0.069
IL.33             -0.043   0.015   0.073
IL.4              -0.140  -0.022   0.097
IL.5              -0.080  -0.003   0.074
IL.8              -0.098   0.026   0.150
Periostin         -0.042   0.013   0.067
SCGB1A.1          -0.160  -0.054   0.053
TNF.alpha         -0.157  -0.017   0.122
D_SEX1            -0.181   0.100   0.381
D_AGE             -0.005   0.005   0.015
D_SmokingStatus2  -0.300   0.236   0.772
D_SmokingStatus3  -0.153   0.133   0.419
year2018          -0.814   0.067   0.949
OCS_YN1           -1.032  -0.565  -0.098
ICS_YN1           -0.298   0.063   0.423

Variable: MS_DIFF_FLIMMEREPITHEL
                    2.5%    Est.   97.5%
(Intercept)       -1.591   0.321   2.234
Eotaxin.3         -0.105  -0.008   0.089
G.CSF             -0.105  -0.050   0.004
IFN.g             -0.151  -0.030   0.091
IL.10             -0.150  -0.050   0.051
IL.13             -0.149  -0.062   0.024
IL.17             -0.041   0.092   0.224
IL.1alpha         -0.109   0.014   0.137
IL.1F7            -0.022   0.098   0.217
IL.24             -0.051   0.002   0.056
IL.33             -0.063  -0.003   0.057
IL.4              -0.066   0.048   0.162
IL.5              -0.065   0.012   0.090
IL.8              -0.053   0.071   0.196
Periostin         -0.033   0.022   0.077
SCGB1A.1          -0.333  -0.201  -0.068
TNF.alpha         -0.173  -0.032   0.108
D_SEX1            -0.328  -0.049   0.229
D_AGE             -0.007   0.003   0.013
D_SmokingStatus2  -0.178   0.348   0.875
D_SmokingStatus3  -0.210   0.079   0.368
year2018          -1.498  -0.674   0.151
OCS_YN1           -0.950  -0.485  -0.020
ICS_YN1           -0.169   0.188   0.545

Variable: MS_DIFF_MONOS
                    2.5%    Est.  97.5%
(Intercept)       -3.244  -1.305  0.634
Eotaxin.3         -0.091   0.009  0.109
G.CSF             -0.083  -0.028  0.028
IFN.g             -0.162  -0.048  0.066
IL.10             -0.121  -0.017  0.086
IL.13             -0.112  -0.025  0.062
IL.17             -0.051   0.079  0.209
IL.1alpha         -0.114   0.016  0.147
IL.1F7            -0.105   0.017  0.140
IL.24             -0.040   0.011  0.062
IL.33             -0.059  -0.003  0.054
IL.4              -0.107   0.010  0.126
IL.5              -0.077   0.000  0.078
IL.8              -0.123   0.000  0.122
Periostin         -0.040   0.016  0.071
SCGB1A.1          -0.133  -0.035  0.062
TNF.alpha         -0.149  -0.009  0.131
D_SEX1            -0.224   0.055  0.335
D_AGE             -0.005   0.004  0.014
D_SmokingStatus2  -0.231   0.307  0.845
D_SmokingStatus3  -0.233   0.061  0.355
year2018          -1.086  -0.220  0.646
OCS_YN1           -0.704  -0.238  0.228
ICS_YN1           -0.340   0.024  0.389
Code
cat("Calculate McFadden's pseudo-R2: ",1 - as.numeric(logLik(res2)) / as.numeric(logLik(update(res2,.~1))))
Calculate McFadden's pseudo-R2:  -0.02085802

3.2 FeNo

Code
fit <- glm( L_FeNO_Value ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
              + year + D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, meta2, family = poisson(link = "log") )

cat("Dispersion test:\n")
Dispersion test:
Code
dispersiontest(fit,trafo=1)

    Overdispersion test

data:  fit
z = 4.9468, p-value = 3.772e-07
alternative hypothesis: true alpha is greater than 0
sample estimates:
   alpha 
20.20783 
Code
fit.overdisp <- glm.nb( L_FeNO_Value ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, meta2, link = log)

cat("Regression analysis result:\n")
Regression analysis result:
Code
summary(fit.overdisp)

Call:
glm.nb(formula = L_FeNO_Value ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = meta2, 
    link = log, init.theta = 2.414738185)

Coefficients:
                   Estimate Std. Error z value Pr(>|z|)    
(Intercept)       4.2110087  0.6088223   6.917 4.62e-12 ***
Eotaxin.3         0.0479631  0.0306864   1.563 0.118051    
G.CSF             0.0037055  0.0177663   0.209 0.834787    
IFN.g            -0.0241715  0.0344111  -0.702 0.482408    
IL.10            -0.0144073  0.0327622  -0.440 0.660116    
IL.13            -0.0859216  0.0253569  -3.388 0.000703 ***
IL.17             0.0057263  0.0413538   0.138 0.889869    
IL.1alpha        -0.0884533  0.0418792  -2.112 0.034677 *  
IL.1F7            0.1277939  0.0399134   3.202 0.001366 ** 
IL.24             0.0525654  0.0160303   3.279 0.001041 ** 
IL.33            -0.0425528  0.0181781  -2.341 0.019238 *  
IL.4              0.0164636  0.0382803   0.430 0.667137    
IL.5              0.1015736  0.0248090   4.094 4.24e-05 ***
IL.8              0.0051832  0.0376788   0.138 0.890586    
Periostin        -0.0009749  0.0174456  -0.056 0.955436    
SCGB1A.1         -0.0048724  0.0327395  -0.149 0.881692    
TNF.alpha        -0.0189874  0.0441030  -0.431 0.666814    
year2018         -0.0259438  0.2837279  -0.091 0.927144    
D_SEX1           -0.0612750  0.0900758  -0.680 0.496340    
D_AGE             0.0005657  0.0030014   0.188 0.850503    
D_SmokingStatus2 -0.0304314  0.1723766  -0.177 0.859870    
D_SmokingStatus3  0.0106987  0.0923293   0.116 0.907752    
OCS_YN1           0.4378511  0.1459515   3.000 0.002700 ** 
ICS_YN1           0.1888120  0.1174025   1.608 0.107781    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for Negative Binomial(2.4147) family taken to be 1)

    Null deviance: 415.87  on 274  degrees of freedom
Residual deviance: 286.15  on 251  degrees of freedom
  (5 observations deleted due to missingness)
AIC: 2398.4

Number of Fisher Scoring iterations: 1

              Theta:  2.415 
          Std. Err.:  0.209 

 2 x log-likelihood:  -2348.392 
Code
confint(fit.overdisp,level = 0.95)
                        2.5 %       97.5 %
(Intercept)       3.084273962  5.357192703
Eotaxin.3        -0.016482534  0.111893206
G.CSF            -0.032757998  0.039771452
IFN.g            -0.093046976  0.044782880
IL.10            -0.084823907  0.055742306
IL.13            -0.138618322 -0.034930546
IL.17            -0.075709710  0.087187414
IL.1alpha        -0.171421418 -0.005656127
IL.1F7            0.046877066  0.206262362
IL.24             0.020522585  0.084632623
IL.33            -0.079163361 -0.006374465
IL.4             -0.061405044  0.092861315
IL.5              0.051289405  0.151673949
IL.8             -0.072717273  0.081461160
Periostin        -0.036122059  0.033429982
SCGB1A.1         -0.071667540  0.056838174
TNF.alpha        -0.103736835  0.063562902
year2018         -0.571536702  0.524629332
D_SEX1           -0.243532612  0.120572826
D_AGE            -0.005523113  0.006625780
D_SmokingStatus2 -0.368885990  0.323678519
D_SmokingStatus3 -0.171175817  0.193139979
OCS_YN1           0.140539460  0.734056644
ICS_YN1          -0.041192858  0.427103102
Code
cat("Calculate McFadden's pseudo-R2: ",PseudoR2(fit.overdisp))
Calculate McFadden's pseudo-R2:  0.04414188
Code
res<-summary(fit.overdisp)$coefficients
sig <- res[res[,"Pr(>|z|)"]<=0.05,][-1,]

Figure 8 Significant cytokines for FeNo in general case (pooled)

Code
plot(Effect(focal.predictors = rownames(sig)[1] , fit.overdisp), rug = FALSE,  main="IL-13\n(Coeff: -0.09; P-value: 7.03e-4)", ylab= "FeNO",  xlab= "log2(Expression)",rescale.axis=F, ylim=c(0,100))
plot(Effect(focal.predictors = rownames(sig)[2] , fit.overdisp), rug = FALSE,  main="IL-1a\n(Coeff: -0.09; P-value: 3.47e-2)", ylab= "FeNO",  xlab= "log2(Expression)",rescale.axis=F, ylim=c(0,100)) 
plot(Effect(focal.predictors = rownames(sig)[3] , fit.overdisp), rug = FALSE,  main="IL-37\n(Coeff: 0.13; P-value: 1.37e-3)", ylab= "FeNO",  xlab= "log2(Expression)",rescale.axis=F, ylim=c(0,100))
plot(Effect(focal.predictors = rownames(sig)[4] , fit.overdisp), rug = FALSE,  main="IL-24\n(Coeff: 0.05; P-value: 1.04e-3)", ylab= "FeNO",  xlab= "log2(Expression)",rescale.axis=F, ylim=c(0,100)) 
plot(Effect(focal.predictors = rownames(sig)[5] , fit.overdisp), rug = FALSE,  main="IL-33\n(Coeff: -0.04; P-value: 1.92e-2)", ylab= "FeNO",  xlab= "log2(Expression)",rescale.axis=F, ylim=c(0,100))
plot(Effect(focal.predictors = rownames(sig)[6] , fit.overdisp), rug = FALSE,  main="IL-5\n(Coeff: 0.1; P-value: 4.24e-5)", ylab= "FeNO",  xlab= "log2(Expression)",rescale.axis=F, ylim=c(0,100))
(a) Effects for IL-13
(b) Effects for IL-1a
(c) Effects for IL-37
(d) Effects for IL-24
(e) Effects for IL-33
(f) Effects for IL-5
Figure 8: Effects over significant covariates in FeNo
WARNING: OCS could not be used because all mild cases are equal to 0. The model needs at least one sample with OCS equal. to 1 to contrast.
Code
fit.overdisp<- glm.nb( L_FeNO_Value ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                        + year+D_SEX+D_AGE + D_SmokingStatus + ICS_YN, data=subset(meta2, D_ASTHMA_SEVERITYGRADE_SCREEN==1), link = log)
summary(fit.overdisp )

Call:
glm.nb(formula = L_FeNO_Value ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + ICS_YN, data = subset(meta2, D_ASTHMA_SEVERITYGRADE_SCREEN == 
    1), link = log, init.theta = 4.256986231)

Coefficients:
                  Estimate Std. Error z value Pr(>|z|)    
(Intercept)       6.869736   1.634560   4.203 2.64e-05 ***
Eotaxin.3         0.094948   0.066893   1.419  0.15579    
G.CSF            -0.031404   0.041582  -0.755  0.45012    
IFN.g             0.024712   0.073170   0.338  0.73556    
IL.10            -0.066622   0.117399  -0.567  0.57038    
IL.13            -0.088973   0.052629  -1.691  0.09092 .  
IL.17             0.048914   0.106831   0.458  0.64705    
IL.1alpha        -0.095811   0.106983  -0.896  0.37048    
IL.1F7            0.267567   0.134204   1.994  0.04618 *  
IL.24             0.038472   0.048070   0.800  0.42352    
IL.33            -0.107298   0.040717  -2.635  0.00841 ** 
IL.4              0.147772   0.093814   1.575  0.11522    
IL.5             -0.021491   0.072650  -0.296  0.76737    
IL.8             -0.012854   0.100904  -0.127  0.89864    
Periostin         0.012458   0.054471   0.229  0.81910    
SCGB1A.1         -0.144382   0.099871  -1.446  0.14827    
TNF.alpha         0.059347   0.117338   0.506  0.61301    
year2018         -1.624046   0.936941  -1.733  0.08303 .  
D_SEX1           -0.054022   0.189369  -0.285  0.77543    
D_AGE             0.001903   0.007132   0.267  0.78959    
D_SmokingStatus2 -0.435141   0.475475  -0.915  0.36010    
D_SmokingStatus3 -0.152515   0.240107  -0.635  0.52530    
ICS_YN1          -0.133444   0.223723  -0.596  0.55086    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for Negative Binomial(4.257) family taken to be 1)

    Null deviance: 110.122  on 49  degrees of freedom
Residual deviance:  49.982  on 27  degrees of freedom
  (1 observation deleted due to missingness)
AIC: 450.21

Number of Fisher Scoring iterations: 1

              Theta:  4.257 
          Std. Err.:  0.941 

 2 x log-likelihood:  -402.213 
Code
confint(fit.overdisp,level = 0.95)
                       2.5 %      97.5 %
(Intercept)       3.38373195 10.38981113
Eotaxin.3        -0.03974129  0.23091559
G.CSF            -0.11864342  0.05671999
IFN.g            -0.12905961  0.18083009
IL.10            -0.31179096  0.18118860
IL.13            -0.20554078  0.02677031
IL.17            -0.17562649  0.27301741
IL.1alpha        -0.31355750  0.12122476
IL.1F7           -0.00782111  0.54310478
IL.24            -0.05700696  0.13421655
IL.33            -0.19034290 -0.02345888
IL.4             -0.03845511  0.33697390
IL.5             -0.16709551  0.12432794
IL.8             -0.22625457  0.19896432
Periostin        -0.10593533  0.12968396
SCGB1A.1         -0.35398506  0.06235838
TNF.alpha        -0.18569603  0.29684582
year2018         -3.50361817  0.24996833
D_SEX1           -0.43595228  0.32658151
D_AGE            -0.01326760  0.01710735
D_SmokingStatus2 -1.43110232  0.57313806
D_SmokingStatus3 -0.63299179  0.32483279
ICS_YN1          -0.59910007  0.35244330
Code
cat("Calculate McFadden's pseudo-R2: ",PseudoR2(fit.overdisp))
Calculate McFadden's pseudo-R2:  0.0917397
Code
res<-summary(fit.overdisp)$coefficients
sig <- res[res[,"Pr(>|z|)"]<=0.05,][-1,]

###write.csv(x = res,file = paste0(prefix.tables,"231218_figure4_tables/231218_FeNO_mild.csv"),quote = FALSE)

Figure 9 Significant cytokines for FeNo in mild severity

Code
eff_plot <- Effect(focal.predictors = rownames(sig)[1] , fit.overdisp, xlevels=list(IL.1F7=seq(min(meta2$IL.1F7) - 1,max(meta2$IL.1F7) + 1,0.1)))
eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.1F7, y = fit), color = "blue") +
  geom_point(data = meta2, aes(x = IL.1F7, y = L_FeNO_Value), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.1F7, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-37 (Mild)\n(Coeff: 0.27; P-value: 0.05)",
       x = expression('log'[2] * '(Expression)'),
       y = "FeNO (ppb)") +
  theme_bw()

eff_plot <- Effect(focal.predictors = rownames(sig)[2] , fit.overdisp, xlevels=list(IL.33=seq(min(meta2$IL.33) - 1,max(meta2$IL.33) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.33, y = fit), color = "blue") +
  geom_point(data = meta2, aes(x = IL.33, y = L_FeNO_Value), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.33, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-33 (Mild)\n(Coeff: -0.11; P-value: 0.01)",
       x = expression('log'[2] * '(Expression)'),
       y = "FeNO (ppb)") +
  theme_bw()
(a) Effects for IL-37
(b) Effects for IL-33
Figure 9: Effects over significant covariates in FeNo (Mild)
Code
eff_plot <- Effect(focal.predictors = rownames(sig)[1] , fit.overdisp, xlevels=list(IL.1F7=seq(min(meta2$IL.1F7) - 1,max(meta2$IL.1F7) + 1,0.1)))
eff_data <- as.data.frame(eff_plot)

p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.1F7, y = fit), color = "blue") +
  geom_point(data = meta2, aes(x = IL.1F7, y = L_FeNO_Value), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.1F7, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-37 (Mild)\n(Coeff: 0.27; P-value: 0.05)",
       x = expression('log'[2] * '(Expression)'),
       y = "FeNO (ppb)") +
  theme_bw()

##ggsave(filename = paste0(prefix.tables,"231218_figure4/231218_IL37_mild.pdf"),plot = p, width = 10,height = 10,units = "cm")

eff_plot <- Effect(focal.predictors = rownames(sig)[2] , fit.overdisp, xlevels=list(IL.33=seq(min(meta2$IL.33) - 1,max(meta2$IL.33) + 1,0.1)))
eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.33, y = fit), color = "blue") +
  geom_point(data = meta2, aes(x = IL.33, y = L_FeNO_Value), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.33, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-33 (Mild)\n(Coeff: -0.11; P-value: 0.01)",
       x = expression('log'[2] * '(Expression)'),
       y = "FeNO (ppb)") +
  theme_bw()

##ggsave(filename = paste0(prefix.tables,"231218_figure4/231218_IL33_mild.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
fit.overdisp<- glm.nb( L_FeNO_Value ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data=subset(meta2, D_ASTHMA_SEVERITYGRADE_SCREEN==2), link = log)
summary(fit.overdisp )

Call:
glm.nb(formula = L_FeNO_Value ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = subset(meta2, 
    D_ASTHMA_SEVERITYGRADE_SCREEN == 2), link = log, init.theta = 3.313406929)

Coefficients:
                  Estimate Std. Error z value Pr(>|z|)   
(Intercept)       2.637755   1.208067   2.183  0.02900 * 
Eotaxin.3        -0.047142   0.070516  -0.669  0.50380   
G.CSF            -0.001170   0.030791  -0.038  0.96969   
IFN.g             0.064003   0.070285   0.911  0.36250   
IL.10             0.020621   0.058517   0.352  0.72455   
IL.13             0.015234   0.064951   0.235  0.81456   
IL.17            -0.095478   0.097908  -0.975  0.32947   
IL.1alpha        -0.023718   0.094563  -0.251  0.80196   
IL.1F7           -0.034395   0.101745  -0.338  0.73533   
IL.24             0.029397   0.029668   0.991  0.32175   
IL.33             0.044256   0.037732   1.173  0.24083   
IL.4             -0.066663   0.075788  -0.880  0.37908   
IL.5              0.135197   0.046149   2.930  0.00339 **
IL.8              0.025509   0.061400   0.415  0.67780   
Periostin         0.046332   0.039629   1.169  0.24234   
SCGB1A.1          0.022792   0.045495   0.501  0.61638   
TNF.alpha        -0.073402   0.065536  -1.120  0.26270   
year2018          0.805482   0.612686   1.315  0.18862   
D_SEX1           -0.093514   0.182241  -0.513  0.60786   
D_AGE             0.002706   0.005909   0.458  0.64702   
D_SmokingStatus2  0.061922   0.366611   0.169  0.86587   
D_SmokingStatus3 -0.284227   0.182901  -1.554  0.12019   
OCS_YN1           0.525853   0.678055   0.776  0.43803   
ICS_YN1           0.159957   0.175375   0.912  0.36172   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for Negative Binomial(3.3134) family taken to be 1)

    Null deviance: 115.728  on 67  degrees of freedom
Residual deviance:  69.922  on 44  degrees of freedom
  (1 observation deleted due to missingness)
AIC: 601.64

Number of Fisher Scoring iterations: 1

              Theta:  3.313 
          Std. Err.:  0.618 

 2 x log-likelihood:  -551.636 
Code
confint(fit.overdisp,level = 0.95)
                        2.5 %     97.5 %
(Intercept)       0.408192533 4.89937591
Eotaxin.3        -0.196479591 0.10174276
G.CSF            -0.067208975 0.06260007
IFN.g            -0.070067098 0.20008491
IL.10            -0.105705991 0.14824319
IL.13            -0.113150740 0.14173271
IL.17            -0.283713033 0.09678263
IL.1alpha        -0.230156549 0.18546844
IL.1F7           -0.254272815 0.18075171
IL.24            -0.032230108 0.09171639
IL.33            -0.032888457 0.11933900
IL.4             -0.221492642 0.08526244
IL.5              0.043335582 0.22510296
IL.8             -0.103900116 0.15102866
Periostin        -0.033284693 0.12465681
SCGB1A.1         -0.072366725 0.11353153
TNF.alpha        -0.213692643 0.06164363
year2018         -0.444121727 2.07016203
D_SEX1           -0.463618795 0.27211814
D_AGE            -0.009634514 0.01495351
D_SmokingStatus2 -0.689813441 0.85982176
D_SmokingStatus3 -0.657435124 0.08698253
OCS_YN1          -0.717746762 2.02846301
ICS_YN1          -0.182590092 0.51258782
Code
cat("Calculate McFadden's pseudo-R2: ",PseudoR2(fit.overdisp))
Calculate McFadden's pseudo-R2:  0.06058334
Code
res<-summary(fit.overdisp)$coefficients
sig <- res[res[,"Pr(>|z|)"]<=0.05,][-1,]

###write.csv(x = res,file = paste0(prefix.tables,"231218_figure4_tables/231218_FeNO_moderate.csv"),quote = FALSE)

Figure 10 Significant cytokines for FeNo in moderate severity

Code
eff_plot <- Effect(focal.predictors = "IL.5" , fit.overdisp, xlevels=list(IL.5=seq(min(meta2$IL.5) - 1,max(meta2$IL.5) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.5, y = fit), color = "blue") +
  geom_point(data = meta2, aes(x = IL.5, y = L_FeNO_Value), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.5, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-5 (Moderate)\n(Coeff: 0.14; P-value: 0.003)",
       x = expression('log'[2] * '(Expression)'),
       y = "FeNO (ppb)") +
  theme_bw()
(a) Effects for IL-5
Figure 10: Effects over significant covariates in FeNo (Moderate)
Code
eff_plot <- Effect(focal.predictors = "IL.5" , fit.overdisp, xlevels=list(IL.5=seq(min(meta2$IL.5) - 1,max(meta2$IL.5) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.5, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.5, y = L_FeNO_Value), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.5, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-5 (Moderate)\n(Coeff: 0.14; P-value: 0.003)",
       x = expression('log'[2] * '(Expression)'),
       y = "FeNO (ppb)") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure4/231218_IL5_moderate.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
fit.overdisp<- glm.nb( L_FeNO_Value ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data=subset(meta2, D_ASTHMA_SEVERITYGRADE_SCREEN==3), link = log)
Warning in dpois(y, mu, log = TRUE): non-integer x = 73.500000
Warning in dpois(y, mu, log = TRUE): non-integer x = 41.500000
Warning in dpois(y, mu, log = TRUE): non-integer x = 39.500000
Warning in dpois(y, mu, log = TRUE): non-integer x = 28.500000
Warning in dpois(y, mu, log = TRUE): non-integer x = 32.500000
Warning in dpois(y, mu, log = TRUE): non-integer x = 58.500000
Code
summary(fit.overdisp )

Call:
glm.nb(formula = L_FeNO_Value ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = subset(meta2, 
    D_ASTHMA_SEVERITYGRADE_SCREEN == 3), link = log, init.theta = 2.357750842)

Coefficients:
                  Estimate Std. Error z value Pr(>|z|)    
(Intercept)       4.940305   1.250624   3.950 7.81e-05 ***
Eotaxin.3         0.058464   0.056979   1.026  0.30486    
G.CSF             0.019831   0.032393   0.612  0.54040    
IFN.g            -0.144490   0.063476  -2.276  0.02283 *  
IL.10            -0.019364   0.065672  -0.295  0.76810    
IL.13            -0.132673   0.048356  -2.744  0.00608 ** 
IL.17            -0.167563   0.071368  -2.348  0.01888 *  
IL.1alpha        -0.047003   0.083022  -0.566  0.57129    
IL.1F7            0.159081   0.076420   2.082  0.03737 *  
IL.24             0.057922   0.028202   2.054  0.04000 *  
IL.33            -0.003792   0.035587  -0.107  0.91515    
IL.4              0.147025   0.071874   2.046  0.04080 *  
IL.5              0.133833   0.049468   2.705  0.00682 ** 
IL.8             -0.080449   0.093941  -0.856  0.39179    
Periostin        -0.001923   0.029547  -0.065  0.94810    
SCGB1A.1         -0.007463   0.082050  -0.091  0.92752    
TNF.alpha         0.157001   0.105798   1.484  0.13781    
year2018         -0.490506   0.507654  -0.966  0.33393    
D_SEX1            0.188697   0.159906   1.180  0.23798    
D_AGE             0.003871   0.006487   0.597  0.55075    
D_SmokingStatus2  0.621865   0.402650   1.544  0.12248    
D_SmokingStatus3  0.235190   0.157041   1.498  0.13423    
OCS_YN1           0.283358   0.251521   1.127  0.25992    
ICS_YN1           0.100277   0.251430   0.399  0.69002    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for Negative Binomial(2.3578) family taken to be 1)

    Null deviance: 156.319  on 94  degrees of freedom
Residual deviance:  99.796  on 71  degrees of freedom
  (3 observations deleted due to missingness)
AIC: 918.17

Number of Fisher Scoring iterations: 1

              Theta:  2.358 
          Std. Err.:  0.342 

 2 x log-likelihood:  -868.165 
Code
confint(fit.overdisp,level = 0.95)
Waiting for profiling to be done...
Warning: glm.fit: algorithm did not converge
Warning: glm.fit: algorithm did not converge
Warning: glm.fit: algorithm did not converge
Warning: glm.fit: algorithm did not converge
Warning: glm.fit: algorithm did not converge
                        2.5 %      97.5 %
(Intercept)       2.382306132  7.52541287
Eotaxin.3        -0.072332248  0.18721338
G.CSF            -0.047421424  0.08621728
IFN.g            -0.277373496 -0.01578035
IL.10            -0.158782659  0.11890209
IL.13            -0.231831954 -0.04049823
IL.17            -0.313042301 -0.02045485
IL.1alpha        -0.227253335  0.13407655
IL.1F7            0.002833726  0.31116392
IL.24             0.001145500  0.11393985
IL.33            -0.077275283  0.06873629
IL.4             -0.011366178  0.30240581
IL.5              0.026098699  0.24113977
IL.8             -0.278533455  0.11711754
Periostin        -0.066066178  0.05979154
SCGB1A.1         -0.179218184  0.15998017
TNF.alpha        -0.058282058  0.37068758
year2018         -1.563920202  0.59417103
D_SEX1           -0.133782350  0.50703448
D_AGE            -0.009581239  0.01714296
D_SmokingStatus2 -0.254417029  1.57285462
D_SmokingStatus3 -0.083280235  0.55463565
OCS_YN1          -0.243227567  0.78341962
ICS_YN1          -0.380117294  0.60794099
Code
cat("Calculate McFadden's pseudo-R2: ",PseudoR2(fit.overdisp))
Calculate McFadden's pseudo-R2:  0.0497934
Code
res<-summary(fit.overdisp)$coefficients
sig <- res[res[,"Pr(>|z|)"]<=0.05,][-1,]

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure4_tables/231218_FeNO_severe.csv"),quote = FALSE)

Figure 11 Significant cytokines for FeNo in severe severity

Code
eff_plot <- Effect(focal.predictors = "IFN.g" , fit.overdisp, xlevels=list(IFN.g=seq(min(meta2$IFN.g) - 1,max(meta2$IFN.g) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IFN.g, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IFN.g, y = L_FeNO_Value), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IFN.g, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IFN-g (Severe)\n(Coeff: -0.14; P-value: 0.02)",
       x = expression('log'[2] * '(Expression)'),
       y = "FeNO (ppb)") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "IL.13" , fit.overdisp, xlevels=list(IL.13=seq(min(meta2$IL.13) - 1,max(meta2$IL.13) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.13, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.13, y = L_FeNO_Value), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.13, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-13 (Severe)\n(Coeff: -0.13; P-value: 0.01)",
       x = expression('log'[2] * '(Expression)'),
       y = "FeNO (ppb)") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "IL.17" , fit.overdisp, xlevels=list(IL.17=seq(min(meta2$IL.17) - 1,max(meta2$IL.17) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.17, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.17, y = L_FeNO_Value), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.17, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-17 (Severe)\n(Coeff: -0.17; P-value: 0.02)",
       x = expression('log'[2] * '(Expression)'),
       y = "FeNO (ppb)") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "IL.1F7" , fit.overdisp, xlevels=list(IL.1F7=seq(min(meta2$IL.1F7) - 1,max(meta2$IL.1F7) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.1F7, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.1F7, y = L_FeNO_Value), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.1F7, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-37 (Severe)\n(Coeff: 0.16; P-value: 0.04)",
       x = expression('log'[2] * '(Expression)'),
       y = "FeNO (ppb)") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "IL.24" , fit.overdisp, xlevels=list(IL.24=seq(min(meta2$IL.24) - 1,max(meta2$IL.24) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.24, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.24, y = L_FeNO_Value), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.24, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-24 (Severe)\n(Coeff: 0.06; P-value: 0.04)",
       x = expression('log'[2] * '(Expression)'),
       y = "FeNO (ppb)") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "IL.4" , fit.overdisp, xlevels=list(IL.4=seq(min(meta2$IL.4) - 1,max(meta2$IL.4) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.4, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.4, y = L_FeNO_Value), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.4, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-4 (Severe)\n(Coeff: 0.15; P-value: 0.04)",
       x = expression('log'[2] * '(Expression)'),
       y = "FeNO (ppb)") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "IL.5" , fit.overdisp, xlevels=list(IL.5=seq(min(meta2$IL.5) - 1,max(meta2$IL.5) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.5, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.5, y = L_FeNO_Value), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.5, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-5 (Severe)\n(Coeff: 0.13; P-value: 0.01)",
       x = expression('log'[2] * '(Expression)'),
       y = "FeNO (ppb)") +
  theme_bw()
(a) Effects for IFN-g
(b) Effects for IL-13
(c) Effects for IL-17
(d) Effects for IL-37
(e) Effects for IL-24
(f) Effects for IL-4
Figure 11: Effects over significant covariates in FeNo (Severe)
Code
eff_plot <- Effect(focal.predictors = "IFN.g" , fit.overdisp, xlevels=list(IFN.g=seq(min(meta2$IFN.g) - 1,max(meta2$IFN.g) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IFN.g, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IFN.g, y = L_FeNO_Value), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IFN.g, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IFN-g (Severe)\n(Coeff: -0.14; P-value: 0.02)",
       x = expression('log'[2] * '(Expression)'),
       y = "FeNO (ppb)") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure4/231218_IFNg_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "IL.13" , fit.overdisp, xlevels=list(IL.13=seq(min(meta2$IL.13) - 1,max(meta2$IL.13) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.13, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.13, y = L_FeNO_Value), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.13, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-13 (Severe)\n(Coeff: -0.13; P-value: 0.01)",
       x = expression('log'[2] * '(Expression)'),
       y = "FeNO (ppb)") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure4/231218_IL13_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "IL.17" , fit.overdisp, xlevels=list(IL.17=seq(min(meta2$IL.17) - 1,max(meta2$IL.17) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.17, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.17, y = L_FeNO_Value), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.17, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-17 (Severe)\n(Coeff: -0.17; P-value: 0.02)",
       x = expression('log'[2] * '(Expression)'),
       y = "FeNO (ppb)") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure4/231218_IL17_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "IL.1F7" , fit.overdisp, xlevels=list(IL.1F7=seq(min(meta2$IL.1F7) - 1,max(meta2$IL.1F7) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.1F7, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.1F7, y = L_FeNO_Value), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.1F7, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-37 (Severe)\n(Coeff: 0.16; P-value: 0.04)",
       x = expression('log'[2] * '(Expression)'),
       y = "FeNO (ppb)") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure4/231218_IL37_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "IL.24" , fit.overdisp, xlevels=list(IL.24=seq(min(meta2$IL.24) - 1,max(meta2$IL.24) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.24, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.24, y = L_FeNO_Value), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.24, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-24 (Severe)\n(Coeff: 0.06; P-value: 0.04)",
       x = expression('log'[2] * '(Expression)'),
       y = "FeNO (ppb)") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure4/231218_IL24_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "IL.4" , fit.overdisp, xlevels=list(IL.4=seq(min(meta2$IL.4) - 1,max(meta2$IL.4) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.4, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.4, y = L_FeNO_Value), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.4, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-4 (Severe)\n(Beta=0.15; p=0.04)",
       x = "Normalized abundances",
       y = "FeNO (ppb)") +
  theme_bw()

ggsave(filename = paste0(prefix.plots,"Fig3/feno_IL4_severe.pdf"),plot = p, width = 7,height = 7,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "IL.5" , fit.overdisp, xlevels=list(IL.5=seq(min(meta2$IL.5) - 1,max(meta2$IL.5) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.5, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.5, y = L_FeNO_Value), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.5, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-5 (Severe)\n(Coeff: 0.13; P-value: 0.01)",
       x = expression('log'[2] * '(Expression)'),
       y = "FeNO (ppb)") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure4/231218_IL5_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
fit2<-glm.nb(L_FeNO_Value ~ D_ASTHMA_SEVERITYGRADE_SCREEN 
             + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,  meta2, link = "log")
summary(fit2)

Call:
glm.nb(formula = L_FeNO_Value ~ D_ASTHMA_SEVERITYGRADE_SCREEN + 
    year + D_SEX + D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, 
    data = meta2, link = "log", init.theta = 2.129549375)

Coefficients:
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     2.890826   0.187598  15.410  < 2e-16 ***
D_ASTHMA_SEVERITYGRADE_SCREEN1  0.638121   0.139666   4.569 4.90e-06 ***
D_ASTHMA_SEVERITYGRADE_SCREEN2  0.494549   0.131956   3.748 0.000178 ***
D_ASTHMA_SEVERITYGRADE_SCREEN3  0.780579   0.141081   5.533 3.15e-08 ***
year2018                        0.244130   0.093826   2.602 0.009270 ** 
D_SEX1                         -0.110537   0.087772  -1.259 0.207895    
D_AGE                          -0.001759   0.003123  -0.563 0.573312    
D_SmokingStatus2                0.074004   0.175096   0.423 0.672551    
D_SmokingStatus3               -0.080574   0.094979  -0.848 0.396250    
OCS_YN1                         0.324734   0.172281   1.885 0.059442 .  
ICS_YN1                         0.065730   0.127172   0.517 0.605255    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for Negative Binomial(2.1295) family taken to be 1)

    Null deviance: 370.11  on 274  degrees of freedom
Residual deviance: 288.38  on 264  degrees of freedom
  (5 observations deleted due to missingness)
AIC: 2408

Number of Fisher Scoring iterations: 1

              Theta:  2.130 
          Std. Err.:  0.181 

 2 x log-likelihood:  -2384.034 
Code
confint(fit2,level = 0.95)
                                      2.5 %      97.5 %
(Intercept)                     2.515740928 3.277334891
D_ASTHMA_SEVERITYGRADE_SCREEN1  0.362464759 0.916059612
D_ASTHMA_SEVERITYGRADE_SCREEN2  0.233912312 0.755305791
D_ASTHMA_SEVERITYGRADE_SCREEN3  0.508735655 1.053719208
year2018                        0.063375578 0.424140013
D_SEX1                         -0.286042056 0.064451008
D_AGE                          -0.007947703 0.004384645
D_SmokingStatus2               -0.256318269 0.424752372
D_SmokingStatus3               -0.265586665 0.105195486
OCS_YN1                        -0.009375335 0.655696540
ICS_YN1                        -0.183098136 0.323098214
Code
cat("Calculate McFadden's pseudo-R2: ",PseudoR2(fit.overdisp))
Calculate McFadden's pseudo-R2:  0.0497934
Code
##write.csv(summary(fit2)$coefficients, file=paste0(prefix.tables,"231204_figure1_tables/231204_functional_Boxplot_asthma_severity_FeNO.csv"))

Figure 12 FeNo value distribution per asthma severity

Code
ggplot(data = meta2 , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_FeNO_Value)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme(axis.text.x = element_text(size=8), axis.text.y = element_text(size=8), axis.title=element_text(size=8,face="bold"), legend.title = element_text(size=8), legend.text = element_text(size=15)) + ylim(c(0,max(meta2$L_FeNO_Value,na.rm = T) + 10)) +
  xlab("\nSeverity grade")+
  ylab("FeNO")+
  scale_x_discrete(labels=c("healthy", "mild", "moderate", "severe"))+
  scale_fill_manual(name= "Severity grade",labels =c("healthy", "mild", "moderate", "severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd" )) +
  geom_signif(y_position=max(meta2$L_FeNO_Value,na.rm = T), xmin=c(1), xmax=c(1),annotation=c("1.41e-53"), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_FeNO_Value,na.rm = T), xmin=c(2), xmax=c(2),annotation=c("4.90e-6"), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_FeNO_Value,na.rm = T), xmin=c(3), xmax=c(3),annotation=c("1.78e-4"), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_FeNO_Value,na.rm = T), xmin=c(4), xmax=c(4),annotation=c("3.15e-8"), tip_length=0,textsize = 3.5,linetype = "blank") 
Figure 12: FeNo value distribution per asthma severity
Code
to.replace <- c()
for(i in summary(fit2)$coefficients[,4][1:4]){
  if(i < 0.001){
    to.replace <- c(to.replace,"***")
  }else if(i < 0.01){
    to.replace <- c(to.replace,"**")
  }else if(i < 0.05){
    to.replace <- c(to.replace,"*")
  }else if(i < 0.1){
    to.replace <- c(to.replace,"+")
  }else{
    to.replace <- c(to.replace,"n.s.")
  }
}

p <- ggplot(data = meta2 , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_FeNO_Value)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), 
                                                                                           axis.text.y = element_text(size=10), 
                                                                                           axis.title.y = element_text(size=10,face="bold"),
                                                                                           axis.title.x =element_blank(), legend.position = "none", 
                                                                                           legend.text = element_text(size=10)) + 
  ylim(c(min(meta2$L_FeNO_Value,na.rm = T),max(meta2$L_FeNO_Value,na.rm = T) + 10)) +
  ylab("FeNO (ppb)")+
  scale_x_discrete(labels=c("Healthy", "Mild", "Moderate", "Severe"))+
  scale_fill_manual(name= "Severity grade",labels =c("Healthy", "Mild", "Moderate", "Severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd" )) +
  geom_signif(y_position=max(meta2$L_FeNO_Value,na.rm = T), xmin=c(1), xmax=c(1),annotation=c(to.replace[1]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_FeNO_Value,na.rm = T), xmin=c(2), xmax=c(2),annotation=c(to.replace[2]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_FeNO_Value,na.rm = T), xmin=c(3), xmax=c(3),annotation=c(to.replace[3]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_FeNO_Value,na.rm = T), xmin=c(4), xmax=c(4),annotation=c(to.replace[4]), tip_length=0,textsize = 3.5,linetype = "blank") 

#ggsave(filename = paste0(prefix.plots,"231204_figure1/231204_functional_Boxplot_asthma_severity_FeNO.pdf"),plot = p,units = "cm",width = 8,height = 8)

Figure 13 Violinplot for FeNo value distribution per asthma severity

Code
ggplot(data = meta2 , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_FeNO_Value)) + 
  geom_violin(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 1)+ 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.04)+ 
  theme(axis.text.x = element_text(size=20), axis.text.y = element_text(size=20), axis.title=element_text(size=22,face="bold"), legend.title = element_text(size=18), legend.text = element_text(size=15))+
  xlab("\nSeverity grade")+
  ylab("FeNO")+
  scale_x_discrete(labels=c("healthy", "mild", "moderate", "severe"))+
  scale_fill_manual(name= "Severity grade",labels =c("healthy", "mild", "moderate", "severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd" )) 
Figure 13: Violinplot for FeNo value distribution per asthma severity

3.3 LCI

Code
LCI <-meta2[!is.na(meta2$L_MBW_LCI), ]
summary(LCI$L_MBW_LCI)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   4.67    5.70    6.28    6.63    7.23   13.35 
Code
# linear model
fit <- lm(L_MBW_LCI ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = LCI)
summary(fit)

Call:
lm(formula = L_MBW_LCI ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = LCI)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.4346 -0.7513 -0.2196  0.4781  4.9289 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)       4.231041   1.185469   3.569 0.000443 ***
Eotaxin.3        -0.052492   0.061609  -0.852 0.395166    
G.CSF             0.054651   0.035059   1.559 0.120526    
IFN.g             0.114513   0.068636   1.668 0.096703 .  
IL.10            -0.118341   0.068233  -1.734 0.084298 .  
IL.13             0.050623   0.057840   0.875 0.382434    
IL.17            -0.069083   0.085596  -0.807 0.420516    
IL.1alpha         0.072693   0.083026   0.876 0.382264    
IL.1F7           -0.197356   0.079509  -2.482 0.013831 *  
IL.24             0.004729   0.031893   0.148 0.882275    
IL.33            -0.026492   0.038524  -0.688 0.492409    
IL.4              0.132704   0.080742   1.644 0.101743    
IL.5              0.012867   0.050859   0.253 0.800516    
IL.8             -0.023251   0.073073  -0.318 0.750657    
Periostin         0.045854   0.035085   1.307 0.192648    
SCGB1A.1          0.069682   0.061944   1.125 0.261892    
TNF.alpha        -0.005885   0.095283  -0.062 0.950807    
year2018          0.560715   0.563151   0.996 0.320538    
D_SEX1            0.169113   0.180377   0.938 0.349536    
D_AGE             0.019154   0.006114   3.133 0.001974 ** 
D_SmokingStatus2 -0.282469   0.345255  -0.818 0.414189    
D_SmokingStatus3  0.023469   0.186714   0.126 0.900094    
OCS_YN1           1.264904   0.305102   4.146 4.89e-05 ***
ICS_YN1           0.096758   0.251440   0.385 0.700760    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.248 on 213 degrees of freedom
Multiple R-squared:  0.3443,    Adjusted R-squared:  0.2735 
F-statistic: 4.863 on 23 and 213 DF,  p-value: 1.428e-10
Code
confint(fit,level = 0.95)
                        2.5 %      97.5 %
(Intercept)       1.894286708  6.56779603
Eotaxin.3        -0.173934047  0.06895041
G.CSF            -0.014456807  0.12375827
IFN.g            -0.020779741  0.24980577
IL.10            -0.252838974  0.01615683
IL.13            -0.063388378  0.16463443
IL.17            -0.237806732  0.09963995
IL.1alpha        -0.090965311  0.23635214
IL.1F7           -0.354082080 -0.04062976
IL.24            -0.058138471  0.06759575
IL.33            -0.102430160  0.04944598
IL.4             -0.026451686  0.29185924
IL.5             -0.087383648  0.11311764
IL.8             -0.167288562  0.12078748
Periostin        -0.023305042  0.11501258
SCGB1A.1         -0.052420095  0.19178332
TNF.alpha        -0.193704040  0.18193347
year2018         -0.549347515  1.67077834
D_SEX1           -0.186439418  0.52466482
D_AGE             0.007102983  0.03120562
D_SmokingStatus2 -0.963023437  0.39808579
D_SmokingStatus3 -0.344575840  0.39151302
OCS_YN1           0.663497709  1.86631007
ICS_YN1          -0.398872760  0.59238791
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,][-1,]

Figure 14 Effects over significant covariates in LCI

Code
plot(Effect(focal.predictors = rownames(sig)[1] , fit), rug = FALSE,  main="IL-37\n(Coeff: -0.2; P-value: 1.38e-2)", ylab= "LCI",  xlab= "log2(Expression)",rescale.axis=F , ylim=c(0,12) )
(a) Effects for IL-37
Figure 14: Effects over significant covariates in LCI
WARNING: OCS could not be used because all mild cases are equal to 0. The model needs at least one sample with OCS equal. to 1 to contrast.
Code
fit <- lm(L_MBW_LCI ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + ICS_YN,
          data = subset(LCI, D_ASTHMA_SEVERITYGRADE_SCREEN==1))
summary(fit )

Call:
lm(formula = L_MBW_LCI ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + ICS_YN, data = subset(LCI, D_ASTHMA_SEVERITYGRADE_SCREEN == 
    1))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.24244 -0.36183 -0.02202  0.41654  1.19297 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)  
(Intercept)       6.991599   3.206041   2.181   0.0435 *
Eotaxin.3        -0.166661   0.129830  -1.284   0.2165  
G.CSF             0.146811   0.075739   1.938   0.0694 .
IFN.g             0.161688   0.133321   1.213   0.2418  
IL.10             0.005854   0.231154   0.025   0.9801  
IL.13             0.063927   0.108674   0.588   0.5641  
IL.17            -0.196917   0.210189  -0.937   0.3620  
IL.1alpha         0.067513   0.209901   0.322   0.7516  
IL.1F7           -0.276936   0.247927  -1.117   0.2795  
IL.24             0.050530   0.085757   0.589   0.5635  
IL.33            -0.092053   0.080539  -1.143   0.2689  
IL.4              0.383643   0.163921   2.340   0.0317 *
IL.5              0.132084   0.140228   0.942   0.3594  
IL.8             -0.057831   0.196814  -0.294   0.7724  
Periostin        -0.043125   0.105364  -0.409   0.6874  
SCGB1A.1          0.035792   0.200125   0.179   0.8602  
TNF.alpha        -0.254753   0.225710  -1.129   0.2747  
year2018         -0.335486   1.699224  -0.197   0.8458  
D_SEX1           -0.732291   0.412275  -1.776   0.0936 .
D_AGE            -0.003442   0.015990  -0.215   0.8321  
D_SmokingStatus2 -0.587760   0.997524  -0.589   0.5635  
D_SmokingStatus3  0.274779   0.487087   0.564   0.5800  
ICS_YN1           0.262770   0.440767   0.596   0.5589  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.8785 on 17 degrees of freedom
Multiple R-squared:  0.696, Adjusted R-squared:  0.3025 
F-statistic: 1.769 on 22 and 17 DF,  p-value: 0.1168
Code
confint(fit,level = 0.95)
                       2.5 %      97.5 %
(Intercept)       0.22744468 13.75575369
Eotaxin.3        -0.44057928  0.10725643
G.CSF            -0.01298383  0.30660564
IFN.g            -0.11959517  0.44297171
IL.10            -0.48183870  0.49354713
IL.13            -0.16535387  0.29320823
IL.17            -0.64037750  0.24654335
IL.1alpha        -0.37534062  0.51036577
IL.1F7           -0.80001625  0.24614406
IL.24            -0.13040201  0.23146198
IL.33            -0.26197626  0.07786940
IL.4              0.03779887  0.72948651
IL.5             -0.16377114  0.42794004
IL.8             -0.47307318  0.35741123
Periostin        -0.26542411  0.17917326
SCGB1A.1         -0.38643446  0.45801896
TNF.alpha        -0.73096020  0.22145341
year2018         -3.92053573  3.24956410
D_SEX1           -1.60211534  0.13753297
D_AGE            -0.03717718  0.03029304
D_SmokingStatus2 -2.69235130  1.51683145
D_SmokingStatus3 -0.75288468  1.30244274
ICS_YN1          -0.66716722  1.19270744
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure5_tables/231218_LCI_mild.csv"),quote = FALSE)

Figure 15 Effects over significant covariates in LCI (mild)

Code
eff_plot <- Effect(focal.predictors = "IL.4" , fit, xlevels=list(IL.4=seq(min(meta2$IL.4) - 1,max(meta2$IL.4) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.4, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.4, y = L_MBW_LCI), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.4, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-4 (Mild)\n(Coeff: 0.38; P-value: 0.03)",
       x = expression('log'[2] * '(Expression)'),
       y = "Lung Clearence Index (LCI)") +
  theme_bw()
Warning: Removed 43 rows containing missing values or values outside the scale range
(`geom_point()`).
(a) Effects for IL-4
Figure 15: Effects over significant covariates in LCI (mild)
Code
eff_plot <- Effect(focal.predictors = "IL.4" , fit, xlevels=list(IL.4=seq(min(meta2$IL.4) - 1,max(meta2$IL.4) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.4, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.4, y = L_MBW_LCI), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.4, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-4 (Mild)\n(Beta=0.38; p=0.03)",
       x = "Normalized abundances",
       y = "Lung Clearence Index (LCI)") +
  theme_bw()

ggsave(filename = paste0(prefix.plots,"Fig3/lci_IL4_mild.pdf"),plot = p, width = 7,height = 7,units = "cm")
Code
fit <- lm(L_MBW_LCI ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = subset(LCI, D_ASTHMA_SEVERITYGRADE_SCREEN==2))
summary(fit )

Call:
lm(formula = L_MBW_LCI ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = subset(LCI, 
    D_ASTHMA_SEVERITYGRADE_SCREEN == 2))

Residuals:
     Min       1Q   Median       3Q      Max 
-2.09262 -0.52137 -0.09283  0.44764  2.53118 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)  
(Intercept)       6.441582   2.835727   2.272   0.0302 *
Eotaxin.3        -0.208292   0.186894  -1.114   0.2736  
G.CSF             0.005639   0.078539   0.072   0.9432  
IFN.g            -0.065303   0.171110  -0.382   0.7053  
IL.10            -0.121752   0.185669  -0.656   0.5168  
IL.13             0.270512   0.182305   1.484   0.1479  
IL.17             0.106304   0.256172   0.415   0.6810  
IL.1alpha        -0.111315   0.226595  -0.491   0.6267  
IL.1F7           -0.254860   0.252919  -1.008   0.3214  
IL.24             0.028682   0.072675   0.395   0.6958  
IL.33             0.096519   0.096854   0.997   0.3267  
IL.4              0.002039   0.207518   0.010   0.9922  
IL.5              0.050179   0.124519   0.403   0.6897  
IL.8             -0.073711   0.144684  -0.509   0.6140  
Periostin        -0.045060   0.100247  -0.449   0.6562  
SCGB1A.1          0.149583   0.108657   1.377   0.1785  
TNF.alpha         0.218483   0.181359   1.205   0.2374  
year2018          1.170696   1.513411   0.774   0.4451  
D_SEX1           -0.515197   0.456360  -1.129   0.2676  
D_AGE             0.002253   0.014504   0.155   0.8776  
D_SmokingStatus2 -1.154502   0.841203  -1.372   0.1798  
D_SmokingStatus3  0.117594   0.420013   0.280   0.7814  
OCS_YN1           0.317064   1.581421   0.200   0.8424  
ICS_YN1          -0.494244   0.465827  -1.061   0.2969  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.235 on 31 degrees of freedom
Multiple R-squared:  0.3909,    Adjusted R-squared:  -0.06095 
F-statistic: 0.8651 on 23 and 31 DF,  p-value: 0.6361
Code
confint(fit,level = 0.95)
                       2.5 %      97.5 %
(Intercept)       0.65807937 12.22508449
Eotaxin.3        -0.58946479  0.17287983
G.CSF            -0.15454351  0.16582093
IFN.g            -0.41428508  0.28367817
IL.10            -0.50042696  0.25692270
IL.13            -0.10130073  0.64232441
IL.17            -0.41616157  0.62877008
IL.1alpha        -0.57345931  0.35082882
IL.1F7           -0.77069113  0.26097174
IL.24            -0.11954014  0.17690412
IL.33            -0.10101713  0.29405450
IL.4             -0.42119635  0.42527469
IL.5             -0.20377987  0.30413819
IL.8             -0.36879553  0.22137427
Periostin        -0.24951454  0.15939453
SCGB1A.1         -0.07202346  0.37119027
TNF.alpha        -0.15140061  0.58836637
year2018         -1.91592721  4.25731896
D_SEX1           -1.44594928  0.41555494
D_AGE            -0.02732870  0.03183487
D_SmokingStatus2 -2.87014669  0.56114331
D_SmokingStatus3 -0.73902930  0.97421702
OCS_YN1          -2.90826451  3.54239280
ICS_YN1          -1.44430436  0.45581570
Code
res<-summary(fit)$coefficients

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure5_tables/231218_LCI_moderate.csv"),quote = FALSE)
Code
fit <- lm(L_MBW_LCI ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = subset(LCI, D_ASTHMA_SEVERITYGRADE_SCREEN==3))
summary(fit )

Call:
lm(formula = L_MBW_LCI ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = subset(LCI, 
    D_ASTHMA_SEVERITYGRADE_SCREEN == 3))

Residuals:
    Min      1Q  Median      3Q     Max 
-2.7285 -0.8145 -0.1182  0.6952  3.7350 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)   
(Intercept)      -0.82799    2.73128  -0.303  0.76282   
Eotaxin.3        -0.06469    0.12996  -0.498  0.62049   
G.CSF             0.05549    0.07349   0.755  0.45310   
IFN.g             0.08050    0.14348   0.561  0.57686   
IL.10            -0.28263    0.14952  -1.890  0.06356 . 
IL.13            -0.11280    0.12231  -0.922  0.36007   
IL.17             0.08944    0.16333   0.548  0.58600   
IL.1alpha         0.43219    0.19301   2.239  0.02886 * 
IL.1F7           -0.59542    0.19090  -3.119  0.00279 **
IL.24            -0.02761    0.06648  -0.415  0.67944   
IL.33             0.08637    0.09845   0.877  0.38381   
IL.4              0.15657    0.18676   0.838  0.40515   
IL.5             -0.03104    0.11639  -0.267  0.79064   
IL.8              0.38524    0.20807   1.851  0.06903 . 
Periostin         0.06637    0.06828   0.972  0.33490   
SCGB1A.1         -0.19053    0.18357  -1.038  0.30346   
TNF.alpha        -0.23579    0.24211  -0.974  0.33401   
year2018          2.77934    1.22327   2.272  0.02668 * 
D_SEX1            0.60520    0.35686   1.696  0.09509 . 
D_AGE             0.02622    0.01441   1.820  0.07375 . 
D_SmokingStatus2  0.65096    0.90754   0.717  0.47598   
D_SmokingStatus3 -0.16830    0.37911  -0.444  0.65869   
OCS_YN1          -0.33179    0.66350  -0.500  0.61886   
ICS_YN1           0.78382    0.67029   1.169  0.24688   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.445 on 60 degrees of freedom
Multiple R-squared:  0.4558,    Adjusted R-squared:  0.2472 
F-statistic: 2.185 on 23 and 60 DF,  p-value: 0.008197
Code
confint(fit,level = 0.95)
                       2.5 %      97.5 %
(Intercept)      -6.29136277  4.63537423
Eotaxin.3        -0.32465667  0.19527991
G.CSF            -0.09149785  0.20248620
IFN.g            -0.20650723  0.36750466
IL.10            -0.58172296  0.01646010
IL.13            -0.35744867  0.13184617
IL.17            -0.23726592  0.41614431
IL.1alpha         0.04611382  0.81827088
IL.1F7           -0.97728298 -0.21356216
IL.24            -0.16058630  0.10537425
IL.33            -0.11055329  0.28329517
IL.4             -0.21700423  0.53015394
IL.5             -0.26385350  0.20177848
IL.8             -0.03096905  0.80144908
Periostin        -0.07020154  0.20294721
SCGB1A.1         -0.55772282  0.17665605
TNF.alpha        -0.72008321  0.24849723
year2018          0.33244605  5.22624270
D_SEX1           -0.10862751  1.31903635
D_AGE            -0.00259800  0.05504354
D_SmokingStatus2 -1.16438833  2.46631342
D_SmokingStatus3 -0.92664000  0.59004325
OCS_YN1          -1.65897874  0.99540054
ICS_YN1          -0.55695440  2.12459432
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure5_tables/231218_LCI_severe.csv"),quote = FALSE)

Figure 16 Effects over significant covariates in LCI (Severe)

Code
eff_plot <- Effect(focal.predictors = "IL.1alpha" , fit, xlevels=list(IL.1alpha=seq(min(meta2$IL.1alpha) - 1,max(meta2$IL.1alpha) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.1alpha, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.1alpha, y = L_MBW_LCI), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.1alpha, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-1a (Severe)\n(Coeff: 0.43; P-value: 0.03)",
       x = expression('log'[2] * '(Expression)'),
       y = "Lung Clearence Index (LCI)") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "IL.1F7" , fit, xlevels=list(IL.1F7=seq(min(meta2$IL.1F7) - 1,max(meta2$IL.1F7) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.1F7, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.1F7, y = L_MBW_LCI), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.1F7, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-37 (Severe)\n(Coeff: -0.6; P-value: 0.003)",
       x = expression('log'[2] * '(Expression)'),
       y = "Lung Clearence Index (LCI)") +
  theme_bw()
(a) Effects for IL-1A
(b) Effects for IL-37
Figure 16: Effects over significant covariates in LCI (Severe)
Code
eff_plot <- Effect(focal.predictors = "IL.1alpha" , fit, xlevels=list(IL.1alpha=seq(min(meta2$IL.1alpha) - 1,max(meta2$IL.1alpha) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.1alpha, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.1alpha, y = L_MBW_LCI), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.1alpha, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-1a (Severe)\n(Coeff: 0.43; P-value: 0.03)",
       x = expression('log'[2] * '(Expression)'),
       y = "Lung Clearence Index (LCI)") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure5/231218_LCI_IL1a_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "IL.1F7" , fit, xlevels=list(IL.1F7=seq(min(meta2$IL.1F7) - 1,max(meta2$IL.1F7) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.1F7, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.1F7, y = L_MBW_LCI), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.1F7, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-37 (Severe)\n(Coeff: -0.6; P-value: 0.003)",
       x = expression('log'[2] * '(Expression)'),
       y = "Lung Clearence Index (LCI)") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure5/231218_LCI_IL37_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
fit2 <- lm(L_MBW_LCI ~ D_ASTHMA_SEVERITYGRADE_SCREEN 
           + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
           data = LCI)
summary(fit2)

Call:
lm(formula = L_MBW_LCI ~ D_ASTHMA_SEVERITYGRADE_SCREEN + year + 
    D_SEX + D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = LCI)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.5526 -0.7119 -0.2070  0.4144  5.0399 

Coefficients:
                                Estimate Std. Error t value Pr(>|t|)    
(Intercept)                     4.695802   0.335754  13.986  < 2e-16 ***
D_ASTHMA_SEVERITYGRADE_SCREEN1  0.304500   0.264518   1.151  0.25089    
D_ASTHMA_SEVERITYGRADE_SCREEN2  0.559908   0.241284   2.321  0.02120 *  
D_ASTHMA_SEVERITYGRADE_SCREEN3  1.132981   0.258468   4.383 1.79e-05 ***
year2018                        0.556610   0.180425   3.085  0.00229 ** 
D_SEX1                          0.101641   0.164204   0.619  0.53654    
D_AGE                           0.017290   0.005853   2.954  0.00347 ** 
D_SmokingStatus2               -0.223499   0.327300  -0.683  0.49540    
D_SmokingStatus3                0.016416   0.181249   0.091  0.92792    
OCS_YN1                         0.794244   0.334688   2.373  0.01848 *  
ICS_YN1                        -0.094203   0.251863  -0.374  0.70874    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.228 on 226 degrees of freedom
Multiple R-squared:  0.3268,    Adjusted R-squared:  0.2971 
F-statistic: 10.97 on 10 and 226 DF,  p-value: 3.441e-15
Code
confint(fit,level = 0.95)
                       2.5 %      97.5 %
(Intercept)      -6.29136277  4.63537423
Eotaxin.3        -0.32465667  0.19527991
G.CSF            -0.09149785  0.20248620
IFN.g            -0.20650723  0.36750466
IL.10            -0.58172296  0.01646010
IL.13            -0.35744867  0.13184617
IL.17            -0.23726592  0.41614431
IL.1alpha         0.04611382  0.81827088
IL.1F7           -0.97728298 -0.21356216
IL.24            -0.16058630  0.10537425
IL.33            -0.11055329  0.28329517
IL.4             -0.21700423  0.53015394
IL.5             -0.26385350  0.20177848
IL.8             -0.03096905  0.80144908
Periostin        -0.07020154  0.20294721
SCGB1A.1         -0.55772282  0.17665605
TNF.alpha        -0.72008321  0.24849723
year2018          0.33244605  5.22624270
D_SEX1           -0.10862751  1.31903635
D_AGE            -0.00259800  0.05504354
D_SmokingStatus2 -1.16438833  2.46631342
D_SmokingStatus3 -0.92664000  0.59004325
OCS_YN1          -1.65897874  0.99540054
ICS_YN1          -0.55695440  2.12459432
Code
##write.csv(summary(fit2)$coefficients, file=paste0(prefix.tables,"231204_figure1_tables/231204_functional_Boxplot_asthma_severity_ILC.csv"))

Figure 17 ILC value distribution per asthma severity

Code
ggplot(data = LCI , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_MBW_LCI)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), axis.text.y = element_text(size=10), axis.title=element_text(size=10,face="bold"), legend.position = "node", legend.text = element_text(size=10))+ ylim(c(min(meta2$L_MBW_LCI,na.rm = T),max(meta2$L_MBW_LCI,na.rm = T) + 1)) +
  xlab("") +
  ylab("Lung Clearence Index (LCI)") +
  scale_x_discrete(labels=c("healthy", "mild", "moderate", "severe")) + 
  scale_fill_manual(name= "Severity grade",labels =c("healthy", "mild", "moderate", "severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd"  )) +
  geom_signif(y_position=max(meta2$L_MBW_LCI,na.rm = T) + .5, xmin=c(1), xmax=c(1),annotation=c("1.95e-32"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_MBW_LCI,na.rm = T) + .5, xmin=c(2), xmax=c(2),annotation=c("0.25"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_MBW_LCI,na.rm = T) + .5, xmin=c(3), xmax=c(3),annotation=c("0.02"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_MBW_LCI,na.rm = T) + .5, xmin=c(4), xmax=c(4),annotation=c("1.79e-5"), tip_length=0,textsize = 2,linetype = "blank")
Figure 17: ILC value distribution per asthma severity
Code
to.replace <- c()
for(i in summary(fit2)$coefficients[,4][1:4]){
  if(i < 0.001){
    to.replace <- c(to.replace,"***")
  }else if(i < 0.01){
    to.replace <- c(to.replace,"**")
  }else if(i < 0.05){
    to.replace <- c(to.replace,"*")
  }else if(i < 0.1){
    to.replace <- c(to.replace,"+")
  }else{
    to.replace <- c(to.replace,"n.s.")
  }
}

p <- ggplot(data = LCI , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_MBW_LCI)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), 
                                                                                           axis.text.y = element_text(size=10), 
                                                                                           axis.title.y = element_text(size=10,face="bold"),
                                                                                           axis.title.x =element_blank(), legend.position = "none", 
                                                                                           legend.text = element_text(size=10)) + 
  ylim(c(min(meta2$L_MBW_LCI,na.rm = T),max(meta2$L_MBW_LCI,na.rm = T) + 1)) +
  ylab("Lung Clearence Index (LCI)")+
  scale_x_discrete(labels=c("Healthy", "Mild", "Moderate", "Severe"))+
  scale_fill_manual(name= "Severity grade",labels =c("Healthy", "Mild", "Moderate", "Severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd" )) +
  geom_signif(y_position=max(meta2$L_MBW_LCI,na.rm = T) + .5, xmin=c(1), xmax=c(1),annotation=c(to.replace[1]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_MBW_LCI,na.rm = T) + .5, xmin=c(2), xmax=c(2),annotation=c(to.replace[2]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_MBW_LCI,na.rm = T) + .5, xmin=c(3), xmax=c(3),annotation=c(to.replace[3]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_MBW_LCI,na.rm = T) + .5, xmin=c(4), xmax=c(4),annotation=c(to.replace[4]), tip_length=0,textsize = 3.5,linetype = "blank") 

#ggsave(filename = paste0(prefix.plots,"231204_figure1/231204_functional_Boxplot_asthma_severity_ILC.pdf"),plot = p,units = "cm",width = 8,height = 8)

3.4 FEV1

Code
FEV1 <-meta2[!is.na(meta2$L_SPIRO_FEV1perc), ]
summary(FEV1$L_SPIRO_FEV1perc)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  24.00   71.00   87.00   85.44  103.00  131.00 
Code
fit <- lm(L_SPIRO_FEV1perc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = FEV1)
summary(fit)

Call:
lm(formula = L_SPIRO_FEV1perc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = FEV1)

Residuals:
    Min      1Q  Median      3Q     Max 
-48.821 -12.157   1.294  15.084  45.865 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)       87.20661   18.60520   4.687 4.53e-06 ***
Eotaxin.3         -0.11178    0.93956  -0.119  0.90539    
G.CSF             -0.94180    0.55055  -1.711  0.08837 .  
IFN.g             -1.96391    1.04069  -1.887  0.06029 .  
IL.10              1.64883    1.01726   1.621  0.10629    
IL.13             -0.07618    0.79050  -0.096  0.92330    
IL.17              0.50819    1.29726   0.392  0.69558    
IL.1alpha          0.34537    1.29129   0.267  0.78933    
IL.1F7             0.89423    1.23491   0.724  0.46966    
IL.24              0.54505    0.49219   1.107  0.26917    
IL.33              0.68038    0.56225   1.210  0.22737    
IL.4              -1.00710    1.18006  -0.853  0.39423    
IL.5               0.02579    0.75754   0.034  0.97287    
IL.8               0.83371    1.14677   0.727  0.46789    
Periostin         -0.50876    0.54299  -0.937  0.34967    
SCGB1A.1          -0.21200    0.97832  -0.217  0.82862    
TNF.alpha         -0.79848    1.35904  -0.588  0.55737    
year2018           2.38094    8.72193   0.273  0.78509    
D_SEX1             3.43706    2.76196   1.244  0.21449    
D_AGE             -0.05586    0.09223  -0.606  0.54532    
D_SmokingStatus2  -4.20758    5.34426  -0.787  0.43184    
D_SmokingStatus3   1.08480    2.86633   0.378  0.70540    
OCS_YN1          -12.33925    4.58167  -2.693  0.00755 ** 
ICS_YN1           -4.96804    3.67908  -1.350  0.17811    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 20.78 on 253 degrees of freedom
Multiple R-squared:  0.1854,    Adjusted R-squared:  0.1113 
F-statistic: 2.503 on 23 and 253 DF,  p-value: 0.0002697
Code
confint(fit,level = 0.95)
                       2.5 %       97.5 %
(Intercept)       50.5658112 123.84741364
Eotaxin.3         -1.9621412   1.73858432
G.CSF             -2.0260526   0.14245241
IFN.g             -4.0134318   0.08561423
IL.10             -0.3545376   3.65219767
IL.13             -1.6329780   1.48061040
IL.17             -2.0466113   3.06298878
IL.1alpha         -2.1976685   2.88841300
IL.1F7            -1.5377783   3.32623528
IL.24             -0.4242619   1.51436278
IL.33             -0.4269044   1.78765674
IL.4              -3.3310915   1.31688593
IL.5              -1.4660914   1.51767386
IL.8              -1.4247232   3.09215208
Periostin         -1.5781176   0.56059384
SCGB1A.1          -2.1387008   1.71469186
TNF.alpha         -3.4749552   1.87799753
year2018         -14.7959036  19.55778535
D_SEX1            -2.0022953   8.87642516
D_AGE             -0.2374943   0.12578261
D_SmokingStatus2 -14.7324815   6.31732342
D_SmokingStatus3  -4.5600994   6.72970392
OCS_YN1          -21.3623333  -3.31617524
ICS_YN1          -12.2135693   2.27749746
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]
WARNING: OCS could not be used because all mild cases are equal to 0. The model needs at least one sample with OCS equal. to 1 to contrast.
Code
fit <- lm(L_SPIRO_FEV1perc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + ICS_YN,
          data = subset(FEV1, D_ASTHMA_SEVERITYGRADE_SCREEN==1))
summary(fit)

Call:
lm(formula = L_SPIRO_FEV1perc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + ICS_YN, data = subset(FEV1, D_ASTHMA_SEVERITYGRADE_SCREEN == 
    1))

Residuals:
    Min      1Q  Median      3Q     Max 
-37.430  -8.443  -3.210   9.107  42.019 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)
(Intercept)       93.7823    60.1209   1.560    0.130
Eotaxin.3          1.6287     2.4394   0.668    0.510
G.CSF             -2.4037     1.6520  -1.455    0.157
IFN.g             -0.8651     2.6847  -0.322    0.750
IL.10              2.5838     4.0860   0.632    0.532
IL.13             -3.2403     1.9209  -1.687    0.103
IL.17              0.9982     4.0550   0.246    0.807
IL.1alpha         -1.2428     4.0795  -0.305    0.763
IL.1F7             6.6578     4.8858   1.363    0.184
IL.24             -0.2972     1.6079  -0.185    0.855
IL.33             -0.0174     1.4518  -0.012    0.991
IL.4              -2.3474     3.3065  -0.710    0.484
IL.5              -1.4975     2.7026  -0.554    0.584
IL.8               4.0708     3.6517   1.115    0.275
Periostin         -0.5092     2.0083  -0.254    0.802
SCGB1A.1          -4.0413     3.8212  -1.058    0.300
TNF.alpha         -0.3125     4.1893  -0.075    0.941
year2018         -15.2462    33.7766  -0.451    0.655
D_SEX1             5.7390     7.2981   0.786    0.438
D_AGE              0.1003     0.2624   0.382    0.705
D_SmokingStatus2  -3.7122    17.7514  -0.209    0.836
D_SmokingStatus3   6.5703     8.6075   0.763    0.452
ICS_YN1           -0.2726     8.2310  -0.033    0.974

Residual standard error: 19.28 on 27 degrees of freedom
Multiple R-squared:  0.4234,    Adjusted R-squared:  -0.04634 
F-statistic: 0.9014 on 22 and 27 DF,  p-value: 0.5943
Code
confint(fit,level = 0.95)
                       2.5 %      97.5 %
(Intercept)      -29.5756074 217.1401275
Eotaxin.3         -3.3766040   6.6340921
G.CSF             -5.7934232   0.9859589
IFN.g             -6.3735485   4.6433685
IL.10             -5.8000127  10.9676277
IL.13             -7.1815603   0.7010582
IL.17             -7.3219792   9.3184546
IL.1alpha         -9.6132620   7.1276682
IL.1F7            -3.3669777  16.6826774
IL.24             -3.5963845   3.0019917
IL.33             -2.9961490   2.9613470
IL.4              -9.1319041   4.4370028
IL.5              -7.0427468   4.0477916
IL.8              -3.4218260  11.5634640
Periostin         -4.6298651   3.6114841
SCGB1A.1         -11.8816547   3.7991124
TNF.alpha         -8.9081897   8.2832160
year2018         -84.5500129  54.0576035
D_SEX1            -9.2354813  20.7135899
D_AGE             -0.4380603   0.6385694
D_SmokingStatus2 -40.1351529  32.7107506
D_SmokingStatus3 -11.0907005  24.2313642
ICS_YN1          -17.1612379  16.6160182
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure5_tables/231218_FEV1_mild.csv"),quote = FALSE)
Code
fit <- lm(L_SPIRO_FEV1perc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = subset(FEV1, D_ASTHMA_SEVERITYGRADE_SCREEN==2))
summary(fit)

Call:
lm(formula = L_SPIRO_FEV1perc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = subset(FEV1, 
    D_ASTHMA_SEVERITYGRADE_SCREEN == 2))

Residuals:
     Min       1Q   Median       3Q      Max 
-31.4911 -10.2460   0.6925   8.9331  31.5072 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)  
(Intercept)       61.008572  37.744663   1.616   0.1130  
Eotaxin.3          0.600246   2.210658   0.272   0.7872  
G.CSF             -0.336706   0.975855  -0.345   0.7317  
IFN.g             -0.873544   2.175851  -0.401   0.6900  
IL.10              1.836654   1.835525   1.001   0.3224  
IL.13             -0.699090   2.025812  -0.345   0.7316  
IL.17             -2.414199   3.054634  -0.790   0.4335  
IL.1alpha          4.165542   2.959405   1.408   0.1661  
IL.1F7            -0.579553   3.144266  -0.184   0.8546  
IL.24             -0.486353   0.924476  -0.526   0.6014  
IL.33             -0.473288   1.182797  -0.400   0.6909  
IL.4               4.154989   2.361539   1.759   0.0853 .
IL.5              -1.064970   1.392463  -0.765   0.4484  
IL.8               0.524841   1.914006   0.274   0.7852  
Periostin          0.827660   1.209448   0.684   0.4973  
SCGB1A.1          -0.946535   1.385249  -0.683   0.4979  
TNF.alpha         -4.681951   2.059097  -2.274   0.0278 *
year2018         -10.968355  19.235785  -0.570   0.5714  
D_SEX1             8.878721   5.590922   1.588   0.1193  
D_AGE             -0.005541   0.177122  -0.031   0.9752  
D_SmokingStatus2  -1.957077  11.523367  -0.170   0.8659  
D_SmokingStatus3   4.131424   5.773147   0.716   0.4779  
OCS_YN1           37.987728  22.016467   1.725   0.0913 .
ICS_YN1            4.060556   5.523883   0.735   0.4661  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 18.44 on 45 degrees of freedom
Multiple R-squared:  0.2988,    Adjusted R-squared:  -0.05952 
F-statistic: 0.8339 on 23 and 45 DF,  p-value: 0.6747
Code
confint(fit,level = 0.95)
                       2.5 %      97.5 %
(Intercept)      -15.0130815 137.0302260
Eotaxin.3         -3.8522476   5.0527399
G.CSF             -2.3021784   1.6287662
IFN.g             -5.2559324   3.5088447
IL.10             -1.8602840   5.5335918
IL.13             -4.7792849   3.3811056
IL.17             -8.5665466   3.7381488
IL.1alpha         -1.7950057  10.1260902
IL.1F7            -6.9124312   5.7533242
IL.24             -2.3483435   1.3756370
IL.33             -2.8555634   1.9089871
IL.4              -0.6013951   8.9113721
IL.5              -3.8695338   1.7395948
IL.8              -3.3301638   4.3798463
Periostin         -1.6082946   3.2636140
SCGB1A.1          -3.7365705   1.8435005
TNF.alpha         -8.8291857  -0.5347160
year2018         -49.7112151  27.7745046
D_SEX1            -2.3819744  20.1394156
D_AGE             -0.3622844   0.3512016
D_SmokingStatus2 -25.1663287  21.2521751
D_SmokingStatus3  -7.4962913  15.7591395
OCS_YN1           -6.3557126  82.3311683
ICS_YN1           -7.0651145  15.1862273
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure5_tables/231218_FEV1_moderate.csv"),quote = FALSE)

Figure 18 Effects over significant covariates in FEV1 (moderate)

Code
eff_plot <- Effect(focal.predictors = "TNF.alpha" , fit, xlevels=list(TNF.alpha=seq(min(meta2$TNF.alpha) - 1,max(meta2$TNF.alpha) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = TNF.alpha, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = TNF.alpha, y = L_SPIRO_FEV1perc), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = TNF.alpha, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "TNF-a (Moderate)\n(Coeff: -4.68; P-value: 0.03)",
       x = expression('log'[2] * '(Expression)'),
       y = "FEV1 [%pred.]") +
  theme_bw()
Figure 18: Effects over significant covariates in FEV1 (moderate)
Code
eff_plot <- Effect(focal.predictors = "TNF.alpha" , fit, xlevels=list(TNF.alpha=seq(min(meta2$TNF.alpha) - 1,max(meta2$TNF.alpha) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = TNF.alpha, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = TNF.alpha, y = L_SPIRO_FEV1perc), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = TNF.alpha, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "TNF-a (Moderate)\n(Beta=-4.68; p=0.03)",
       x = "Normalized abundances",
       y = "FEV1 [%pred.]") +
  theme_bw()

ggsave(filename = paste0(prefix.plots,"Fig3/fev1_TNFa_moderate.pdf"),plot = p, width = 7,height = 7,units = "cm")
Code
fit <- lm(L_SPIRO_FEV1perc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = subset(FEV1, D_ASTHMA_SEVERITYGRADE_SCREEN==3))
summary(fit)

Call:
lm(formula = L_SPIRO_FEV1perc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = subset(FEV1, 
    D_ASTHMA_SEVERITYGRADE_SCREEN == 3))

Residuals:
   Min     1Q Median     3Q    Max 
-32.04 -12.72  -2.26  11.85  45.87 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)   
(Intercept)      103.53616   36.76405   2.816  0.00627 **
Eotaxin.3         -0.24207    1.69891  -0.142  0.88710   
G.CSF              0.07713    0.98089   0.079  0.93754   
IFN.g             -2.54568    1.81913  -1.399  0.16599   
IL.10              4.51978    1.94848   2.320  0.02320 * 
IL.13              2.58574    1.47342   1.755  0.08353 . 
IL.17             -2.74175    2.17761  -1.259  0.21207   
IL.1alpha         -2.44221    2.51019  -0.973  0.33385   
IL.1F7             3.87257    2.32841   1.663  0.10062   
IL.24              1.51414    0.84371   1.795  0.07691 . 
IL.33             -1.40636    1.07854  -1.304  0.19640   
IL.4              -1.78960    2.14307  -0.835  0.40644   
IL.5               1.15498    1.47325   0.784  0.43563   
IL.8              -4.43949    2.76472  -1.606  0.11270   
Periostin         -0.32257    0.89844  -0.359  0.72062   
SCGB1A.1           4.02777    2.32937   1.729  0.08807 . 
TNF.alpha          0.65195    3.08572   0.211  0.83327   
year2018          -6.51521   15.19702  -0.429  0.66941   
D_SEX1             3.52497    4.72907   0.745  0.45847   
D_AGE             -0.09996    0.19717  -0.507  0.61373   
D_SmokingStatus2 -19.87177   12.31737  -1.613  0.11105   
D_SmokingStatus3  -1.21445    4.84125  -0.251  0.80264   
OCS_YN1            8.59347    7.64844   1.124  0.26493   
ICS_YN1           -4.83598    7.63974  -0.633  0.52874   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 20.35 on 72 degrees of freedom
Multiple R-squared:  0.3743,    Adjusted R-squared:  0.1744 
F-statistic: 1.872 on 23 and 72 DF,  p-value: 0.02328
Code
confint(fit,level = 0.95)
                       2.5 %      97.5 %
(Intercept)       30.2483662 176.8239478
Eotaxin.3         -3.6287860   3.1446509
G.CSF             -1.8782283   2.0324927
IFN.g             -6.1720585   1.0806941
IL.10              0.6355552   8.4040060
IL.13             -0.3514698   5.5229578
IL.17             -7.0827239   1.5992286
IL.1alpha         -7.4461792   2.5617623
IL.1F7            -0.7690412   8.5141790
IL.24             -0.1677625   3.1960480
IL.33             -3.5563763   0.7436662
IL.4              -6.0617264   2.4825290
IL.5              -1.7818939   4.0918628
IL.8              -9.9508541   1.0718718
Periostin         -2.1135753   1.4684358
SCGB1A.1          -0.6157364   8.6712794
TNF.alpha         -5.4993279   6.8032282
year2018         -36.8099123  23.7794983
D_SEX1            -5.9022640  12.9521973
D_AGE             -0.4930141   0.2930977
D_SmokingStatus2 -44.4260063   4.6824599
D_SmokingStatus3 -10.8653075   8.4364035
OCS_YN1           -6.6534249  23.8403631
ICS_YN1          -20.0655256  10.3935645
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure5_tables/231218_FEV1_severe.csv"),quote = FALSE)

Figure 19 Effects over significant covariates in FEV1 (severe)

Code
eff_plot <- Effect(focal.predictors = "IL.10" , fit, xlevels=list(IL.10=seq(min(meta2$IL.10) - 1,max(meta2$IL.10) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.10, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.10, y = L_SPIRO_FEV1perc), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.10, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-10 (Severe)\n(Coeff: 4.52; P-value: 0.02)",
       x = expression('log'[2] * '(Expression)'),
       y = "FEV1 [%pred.]") +
  theme_bw()
Figure 19: Effects over significant covariates in FEV1 (severe)
Code
eff_plot <- Effect(focal.predictors = "IL.10" , fit, xlevels=list(IL.10=seq(min(meta2$IL.10) - 1,max(meta2$IL.10) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.10, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.10, y = L_SPIRO_FEV1perc), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.10, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-10 (Severe)\n(Beta=4.52; p=0.02)",
       x = "Normalized expression",
       y = "FEV1 [%pred.]") +
  theme_bw()

ggsave(filename = paste0(prefix.plots,"Fig3/fev1_IL10_severe.pdf"),plot = p, width = 7,height = 7,units = "cm")
Code
fit2 <- lm(L_SPIRO_FEV1perc ~ D_ASTHMA_SEVERITYGRADE_SCREEN 
           + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
           data = FEV1)
summary(fit2)

Call:
lm(formula = L_SPIRO_FEV1perc ~ D_ASTHMA_SEVERITYGRADE_SCREEN + 
    year + D_SEX + D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, 
    data = FEV1)

Residuals:
    Min      1Q  Median      3Q     Max 
-46.578 -11.857   0.522  11.384  50.874 

Coefficients:
                                Estimate Std. Error t value Pr(>|t|)    
(Intercept)                    102.37262    4.74820  21.560  < 2e-16 ***
D_ASTHMA_SEVERITYGRADE_SCREEN1 -10.75370    3.55642  -3.024  0.00274 ** 
D_ASTHMA_SEVERITYGRADE_SCREEN2 -19.85420    3.34792  -5.930 9.36e-09 ***
D_ASTHMA_SEVERITYGRADE_SCREEN3 -32.34265    3.60517  -8.971  < 2e-16 ***
year2018                        -3.46346    2.40738  -1.439  0.15142    
D_SEX1                           5.03689    2.25102   2.238  0.02607 *  
D_AGE                            0.01097    0.07992   0.137  0.89094    
D_SmokingStatus2                -9.03803    4.51706  -2.001  0.04642 *  
D_SmokingStatus3                 1.22159    2.44142   0.500  0.61723    
OCS_YN1                         -2.24913    4.47023  -0.503  0.61529    
ICS_YN1                          1.43557    3.30527   0.434  0.66440    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 18.26 on 266 degrees of freedom
Multiple R-squared:  0.3384,    Adjusted R-squared:  0.3136 
F-statistic: 13.61 on 10 and 266 DF,  p-value: < 2.2e-16
Code
confint(fit2,level = 0.95)
                                     2.5 %      97.5 %
(Intercept)                     93.0237808 111.7214690
D_ASTHMA_SEVERITYGRADE_SCREEN1 -17.7560191  -3.7513874
D_ASTHMA_SEVERITYGRADE_SCREEN2 -26.4459949 -13.2624142
D_ASTHMA_SEVERITYGRADE_SCREEN3 -39.4409441 -25.2443584
year2018                        -8.2034133   1.2764875
D_SEX1                           0.6048114   9.4689737
D_AGE                           -0.1463818   0.1683192
D_SmokingStatus2               -17.9317695  -0.1442896
D_SmokingStatus3                -3.5853675   6.0285518
OCS_YN1                        -11.0506659   6.5524041
ICS_YN1                         -5.0722527   7.9433912
Code
##write.csv(summary(fit2)$coefficients, file=paste0(prefix.tables,"231204_figure1_tables/231204_functional_Boxplot_asthma_severity_FEV1.csv"))

Figure 20 FEV1 value distribution per asthma severity

Code
ggplot(data = FEV1 , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_SPIRO_FEV1perc)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), axis.text.y = element_text(size=10), axis.title=element_text(size=10,face="bold"), legend.position = "node", legend.text = element_text(size=10))+ ylim(c(min(meta2$L_SPIRO_FEV1perc,na.rm = T),max(meta2$L_SPIRO_FEV1perc,na.rm = T) + 10)) +
  xlab("")+
  ylab("FEV1 [% pred.]")+
  scale_x_discrete(labels=c("healthy", "mild", "moderate", "severe")) +
  scale_fill_manual(name= "Severity grade",labels =c("healthy", "mild", "moderate", "severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd" )) +
  geom_signif(y_position=max(meta2$L_SPIRO_FEV1perc,na.rm = T), xmin=c(1), xmax=c(1),annotation=c("2.55e-60"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_SPIRO_FEV1perc,na.rm = T), xmin=c(2), xmax=c(2),annotation=c("0.003"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_SPIRO_FEV1perc,na.rm = T), xmin=c(3), xmax=c(3),annotation=c("9.36e-09"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_SPIRO_FEV1perc,na.rm = T), xmin=c(4), xmax=c(4),annotation=c("5.40e-17"), tip_length=0,textsize = 2,linetype = "blank")
Figure 20: FEV1 value distribution per asthma severity
Code
to.replace <- c()
for(i in summary(fit2)$coefficients[,4][1:4]){
  if(i < 0.001){
    to.replace <- c(to.replace,"***")
  }else if(i < 0.01){
    to.replace <- c(to.replace,"**")
  }else if(i < 0.05){
    to.replace <- c(to.replace,"*")
  }else if(i < 0.1){
    to.replace <- c(to.replace,"+")
  }else{
    to.replace <- c(to.replace,"n.s.")
  }
}

p <- ggplot(data = FEV1 , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_SPIRO_FEV1perc)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), 
                                                                                           axis.text.y = element_text(size=10), 
                                                                                           axis.title.y = element_text(size=10,face="bold"),
                                                                                           axis.title.x =element_blank(), legend.position = "none", 
                                                                                           legend.text = element_text(size=10)) + 
  ylim(c(min(meta2$L_SPIRO_FEV1perc,na.rm = T),max(meta2$L_SPIRO_FEV1perc,na.rm = T) + 10)) +
  ylab("FEV1 [% pred.]") +
  scale_x_discrete(labels=c("Healthy", "Mild", "Moderate", "Severe"))+
  scale_fill_manual(name= "Severity grade",labels =c("Healthy", "Mild", "Moderate", "Severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd" )) +
  geom_signif(y_position=max(meta2$L_SPIRO_FEV1perc,na.rm = T), xmin=c(1), xmax=c(1),annotation=c(to.replace[1]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_SPIRO_FEV1perc,na.rm = T), xmin=c(2), xmax=c(2),annotation=c(to.replace[2]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_SPIRO_FEV1perc,na.rm = T), xmin=c(3), xmax=c(3),annotation=c(to.replace[3]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_SPIRO_FEV1perc,na.rm = T), xmin=c(4), xmax=c(4),annotation=c(to.replace[4]), tip_length=0,textsize = 3.5,linetype = "blank") 

#ggsave(filename = paste0(prefix.plots,"231204_figure1/231204_functional_Boxplot_asthma_severity_FEV1.pdf"),plot = p,units = "cm",width = 8,height = 8)

3.5 FEV1/FVC

Code
FEV1_FVC <-meta2[!is.na(meta2$L_SPIRO_FEV1_FVC), ]
summary(FEV1_FVC$L_SPIRO_FEV1_FVC) # range 0-1, but no value exactly 0 or 1--> use beta regression
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 0.2841  0.5917  0.6925  0.6673  0.7548  0.9337 
Code
# beta regression
library(betareg)

fit <- betareg(L_SPIRO_FEV1_FVC ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = FEV1_FVC,    link = "logit")
summary(fit)

Call:
betareg(formula = L_SPIRO_FEV1_FVC ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5 + 
    IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + D_AGE + 
    D_SmokingStatus + OCS_YN + ICS_YN, data = FEV1_FVC, link = "logit")

Quantile residuals:
    Min      1Q  Median      3Q     Max 
-2.9592 -0.6193  0.1489  0.6907  2.0835 

Coefficients (mean model with logit link):
                  Estimate Std. Error z value Pr(>|z|)    
(Intercept)       1.432749   0.442331   3.239   0.0012 ** 
Eotaxin.3         0.016969   0.022061   0.769   0.4418    
G.CSF            -0.016394   0.013070  -1.254   0.2097    
IFN.g            -0.033265   0.024386  -1.364   0.1725    
IL.10             0.028190   0.024030   1.173   0.2408    
IL.13            -0.002350   0.018540  -0.127   0.8991    
IL.17             0.004796   0.030519   0.157   0.8751    
IL.1alpha         0.035617   0.030219   1.179   0.2385    
IL.1F7            0.030475   0.028840   1.057   0.2907    
IL.24            -0.008892   0.011581  -0.768   0.4426    
IL.33             0.012774   0.013181   0.969   0.3325    
IL.4             -0.006969   0.027988  -0.249   0.8034    
IL.5             -0.016310   0.017871  -0.913   0.3614    
IL.8             -0.010645   0.027247  -0.391   0.6960    
Periostin        -0.008969   0.012850  -0.698   0.4852    
SCGB1A.1         -0.011684   0.023515  -0.497   0.6193    
TNF.alpha        -0.020645   0.032265  -0.640   0.5223    
year2018         -0.093858   0.205256  -0.457   0.6475    
D_SEX1            0.108977   0.064645   1.686   0.0918 .  
D_AGE            -0.010384   0.002197  -4.726 2.29e-06 ***
D_SmokingStatus2 -0.103968   0.124795  -0.833   0.4048    
D_SmokingStatus3 -0.057895   0.067021  -0.864   0.3877    
OCS_YN1          -0.167678   0.105371  -1.591   0.1115    
ICS_YN1          -0.098678   0.085990  -1.148   0.2512    

Phi coefficients (precision model with identity link):
      Estimate Std. Error z value Pr(>|z|)    
(phi)   17.850      1.481   12.05   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Type of estimator: ML (maximum likelihood)
Log-likelihood: 228.9 on 25 Df
Pseudo R-squared: 0.2408
Number of iterations: 32 (BFGS) + 1 (Fisher scoring) 
Code
confint(fit,level = 0.95)
                       2.5 %       97.5 %
(Intercept)       0.56579664  2.299700695
Eotaxin.3        -0.02626941  0.060207098
G.CSF            -0.04201070  0.009223581
IFN.g            -0.08106102  0.014530307
IL.10            -0.01890837  0.075289015
IL.13            -0.03868681  0.033986949
IL.17            -0.05501945  0.064611861
IL.1alpha        -0.02361106  0.094845471
IL.1F7           -0.02605155  0.087000737
IL.24            -0.03158958  0.013805446
IL.33            -0.01306086  0.038609299
IL.4             -0.06182486  0.047887257
IL.5             -0.05133612  0.018716783
IL.8             -0.06404863  0.042757912
Periostin        -0.03415528  0.016217302
SCGB1A.1         -0.05777304  0.034405655
TNF.alpha        -0.08388369  0.042593586
year2018         -0.49615239  0.308435872
D_SEX1           -0.01772472  0.235679614
D_AGE            -0.01469049 -0.006077827
D_SmokingStatus2 -0.34856112  0.140625885
D_SmokingStatus3 -0.18925326  0.073464030
OCS_YN1          -0.37420170  0.038845498
ICS_YN1          -0.26721515  0.069859850
(phi)            14.94672516 20.753396268
Code
res<-summary(fit)$coefficients
sig <- res$mean[res$mean[,"Pr(>|z|)"]<=0.05,][-1,] 
WARNING: OCS could not be used because all mild cases are equal to 0. The model needs at least one sample with OCS equal. to 1 to contrast.
Code
fit <- betareg(L_SPIRO_FEV1_FVC ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + ICS_YN,
               data =  subset(FEV1_FVC, D_ASTHMA_SEVERITYGRADE_SCREEN==1),    link = "logit")
summary(fit)

Call:
betareg(formula = L_SPIRO_FEV1_FVC ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5 + 
    IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + D_AGE + 
    D_SmokingStatus + ICS_YN, data = subset(FEV1_FVC, D_ASTHMA_SEVERITYGRADE_SCREEN == 
    1), link = "logit")

Quantile residuals:
    Min      1Q  Median      3Q     Max 
-1.6468 -0.7189 -0.0548  0.6764  2.2629 

Coefficients (mean model with logit link):
                   Estimate Std. Error z value Pr(>|z|)  
(Intercept)       2.605e+00  1.080e+00   2.411   0.0159 *
Eotaxin.3         9.760e-02  4.401e-02   2.218   0.0266 *
G.CSF            -1.848e-02  2.936e-02  -0.630   0.5290  
IFN.g            -1.286e-02  4.876e-02  -0.264   0.7920  
IL.10            -1.815e-02  7.219e-02  -0.251   0.8015  
IL.13            -2.303e-02  3.416e-02  -0.674   0.5002  
IL.17             6.707e-02  7.208e-02   0.931   0.3521  
IL.1alpha        -3.556e-02  7.420e-02  -0.479   0.6318  
IL.1F7            1.721e-01  8.791e-02   1.958   0.0502 .
IL.24            -3.106e-03  2.869e-02  -0.108   0.9138  
IL.33             2.288e-02  2.592e-02   0.883   0.3774  
IL.4             -7.427e-02  5.817e-02  -1.277   0.2017  
IL.5             -4.101e-02  4.903e-02  -0.837   0.4029  
IL.8             -4.378e-05  6.538e-02  -0.001   0.9995  
Periostin        -2.279e-02  3.619e-02  -0.630   0.5289  
SCGB1A.1         -1.352e-01  6.833e-02  -1.978   0.0479 *
TNF.alpha         1.818e-02  7.395e-02   0.246   0.8058  
year2018         -5.141e-01  6.063e-01  -0.848   0.3965  
D_SEX1            1.544e-01  1.294e-01   1.193   0.2330  
D_AGE            -2.985e-03  4.694e-03  -0.636   0.5249  
D_SmokingStatus2  1.767e-01  3.154e-01   0.560   0.5753  
D_SmokingStatus3  1.749e-02  1.537e-01   0.114   0.9094  
ICS_YN1          -4.644e-02  1.478e-01  -0.314   0.7534  

Phi coefficients (precision model with identity link):
      Estimate Std. Error z value Pr(>|z|)    
(phi)   38.920      7.701   5.054 4.33e-07 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Type of estimator: ML (maximum likelihood)
Log-likelihood: 60.73 on 24 Df
Pseudo R-squared: 0.3104
Number of iterations: 36 (BFGS) + 3 (Fisher scoring) 
Code
confint(fit,level = 0.95)
                         2.5 %       97.5 %
(Intercept)       0.4873200438  4.722618956
Eotaxin.3         0.0113450748  0.183860450
G.CSF            -0.0760166762  0.039053201
IFN.g            -0.1084285480  0.082715274
IL.10            -0.1596471553  0.123347513
IL.13            -0.0899826784  0.043921076
IL.17            -0.0741931429  0.208338529
IL.1alpha        -0.1809817467  0.109867292
IL.1F7           -0.0001646145  0.344420023
IL.24            -0.0593463180  0.053134722
IL.33            -0.0279242044  0.073691973
IL.4             -0.1882845890  0.039754178
IL.5             -0.1371076920  0.055080751
IL.8             -0.1281915665  0.128104007
Periostin        -0.0937152293  0.048137863
SCGB1A.1         -0.2691266741 -0.001264367
TNF.alpha        -0.1267645529  0.163128498
year2018         -1.7024360315  0.674237210
D_SEX1           -0.0993251118  0.408107247
D_AGE            -0.0121846466  0.006215511
D_SmokingStatus2 -0.4414071918  0.794744970
D_SmokingStatus3 -0.2837319633  0.318702497
ICS_YN1          -0.3361021808  0.243231655
(phi)            23.8267147548 54.013678866
Code
res<-summary(fit)$coefficients
sig <- res$mean[res$mean[,"Pr(>|z|)"]<=0.05,][-1,] 

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure5_tables/231218_FEV_FVC_mild.csv"),quote = FALSE)

Figure 21 Effects over significant covariates in FEV1/FVC (Mild)

Code
eff_plot <- Effect(focal.predictors = "Eotaxin.3" , fit, xlevels=list(Eotaxin.3=seq(min(meta2$Eotaxin.3) - 1,max(meta2$Eotaxin.3) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = Eotaxin.3, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = Eotaxin.3, y = L_SPIRO_FEV1_FVC), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = Eotaxin.3, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "CCL26 (Mild)\n(Coeff: 0.1; P-value: 0.03)",
       x = expression('log'[2] * '(Expression)'),
       y = "FEV1/FVC [%]") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "SCGB1A.1" , fit, xlevels=list(SCGB1A.1=seq(min(meta2$SCGB1A.1) - 1,max(meta2$SCGB1A.1) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = SCGB1A.1, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = SCGB1A.1, y = L_SPIRO_FEV1_FVC), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = SCGB1A.1, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "SCGB1A1 (Mild)\n(Coeff: -0.14; P-value: 0.05)",
       x = expression('log'[2] * '(Expression)'),
       y = "FEV1/FVC [%]") +
  theme_bw()
(a) Effects for Eotaxin-3
(b) Effects for SCGB1A.1
Figure 21: Effects over significant covariates in FEV1/FVC (Mild)
Code
eff_plot <- Effect(focal.predictors = "Eotaxin.3" , fit, xlevels=list(Eotaxin.3=seq(min(meta2$Eotaxin.3) - 1,max(meta2$Eotaxin.3) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = Eotaxin.3, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = Eotaxin.3, y = L_SPIRO_FEV1_FVC), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = Eotaxin.3, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "CCL26 (Mild)\n(Coeff: 0.1; P-value: 0.03)",
       x = expression('log'[2] * '(Expression)'),
       y = "FEV1/FVC [%]") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure5/231218_FEVFVC_CCL26_mild.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "SCGB1A.1" , fit, xlevels=list(SCGB1A.1=seq(min(meta2$SCGB1A.1) - 1,max(meta2$SCGB1A.1) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = SCGB1A.1, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = SCGB1A.1, y = L_SPIRO_FEV1_FVC), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = SCGB1A.1, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "SCGB1A1 (Mild)\n(Coeff: -0.14; P-value: 0.05)",
       x = expression('log'[2] * '(Expression)'),
       y = "FEV1/FVC [%]") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure5/231218_FEVFVC_SCGB1A1_mild.pdf"),plot = p, width = 10,height = 10,units = "cm")
WARNING: OCS could not be used because all mild cases are equal to 0. The model needs at least one sample with OCS equal. to 1 to contrast.
Code
fit <- betareg(L_SPIRO_FEV1_FVC ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + ICS_YN,
               data =  subset(FEV1_FVC, D_ASTHMA_SEVERITYGRADE_SCREEN==2),    link = "logit")
summary(fit)

Call:
betareg(formula = L_SPIRO_FEV1_FVC ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5 + 
    IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + D_AGE + 
    D_SmokingStatus + ICS_YN, data = subset(FEV1_FVC, D_ASTHMA_SEVERITYGRADE_SCREEN == 
    2), link = "logit")

Quantile residuals:
    Min      1Q  Median      3Q     Max 
-2.6096 -0.6032  0.0688  0.7887  1.7611 

Coefficients (mean model with logit link):
                  Estimate Std. Error z value Pr(>|z|)   
(Intercept)       1.107843   0.851192   1.302   0.1931   
Eotaxin.3         0.040271   0.049294   0.817   0.4139   
G.CSF             0.001483   0.021736   0.068   0.9456   
IFN.g             0.029463   0.046936   0.628   0.5302   
IL.10             0.049986   0.041889   1.193   0.2328   
IL.13            -0.054184   0.044891  -1.207   0.2274   
IL.17            -0.087754   0.067872  -1.293   0.1960   
IL.1alpha         0.032011   0.064319   0.498   0.6187   
IL.1F7            0.038135   0.068089   0.560   0.5754   
IL.24            -0.033053   0.020411  -1.619   0.1054   
IL.33            -0.024596   0.026204  -0.939   0.3479   
IL.4              0.083083   0.052330   1.588   0.1124   
IL.5             -0.027538   0.030577  -0.901   0.3678   
IL.8             -0.026262   0.043815  -0.599   0.5489   
Periostin         0.016383   0.026557   0.617   0.5373   
SCGB1A.1         -0.051525   0.032912  -1.566   0.1175   
TNF.alpha        -0.067610   0.046068  -1.468   0.1422   
year2018         -0.557951   0.428953  -1.301   0.1934   
D_SEX1            0.327857   0.122614   2.674   0.0075 **
D_AGE            -0.007570   0.003961  -1.911   0.0560 . 
D_SmokingStatus2 -0.259867   0.248275  -1.047   0.2952   
D_SmokingStatus3  0.001386   0.124406   0.011   0.9911   
ICS_YN1           0.241058   0.120333   2.003   0.0451 * 

Phi coefficients (precision model with identity link):
      Estimate Std. Error z value Pr(>|z|)    
(phi)   26.256      4.399   5.969 2.39e-09 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Type of estimator: ML (maximum likelihood)
Log-likelihood:  69.8 on 24 Df
Pseudo R-squared: 0.3933
Number of iterations: 33 (BFGS) + 2 (Fisher scoring) 
Code
confint(fit,level = 0.95)
                        2.5 %       97.5 %
(Intercept)      -0.560462503 2.776148e+00
Eotaxin.3        -0.056342753 1.368857e-01
G.CSF            -0.041119241 4.408550e-02
IFN.g            -0.062530292 1.214572e-01
IL.10            -0.032115248 1.320880e-01
IL.13            -0.142168702 3.380068e-02
IL.17            -0.220779771 4.527181e-02
IL.1alpha        -0.094052321 1.580739e-01
IL.1F7           -0.095316127 1.715863e-01
IL.24            -0.073057948 6.952902e-03
IL.33            -0.075954354 2.676234e-02
IL.4             -0.019481088 1.856470e-01
IL.5             -0.087467045 3.239079e-02
IL.8             -0.112138556 5.961464e-02
Periostin        -0.035666434 6.843336e-02
SCGB1A.1         -0.116030062 1.298105e-02
TNF.alpha        -0.157902042 2.268162e-02
year2018         -1.398683794 2.827827e-01
D_SEX1            0.087537170 5.681767e-01
D_AGE            -0.015333053 1.932984e-04
D_SmokingStatus2 -0.746477795 2.267430e-01
D_SmokingStatus3 -0.242445945 2.452178e-01
ICS_YN1           0.005210987 4.769059e-01
(phi)            17.634734258 3.487794e+01
Code
res<-summary(fit)$coefficients
sig <- res$mean[res$mean[,"Pr(>|z|)"]<=0.05,]

sex <- Effect(focal.predictors = "D_SEX" , fit)
sex$variables$D_SEX$levels <- c("male", "female")
levels(sex$x$D_SEX)<-c("male", "female")

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure5_tables/231218_FEV_FVC_moderate.csv"),quote = FALSE)
Code
fit <- betareg(L_SPIRO_FEV1_FVC ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
               data =  subset(FEV1_FVC, D_ASTHMA_SEVERITYGRADE_SCREEN==3),    link = "logit")
summary(fit)

Call:
betareg(formula = L_SPIRO_FEV1_FVC ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5 + 
    IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + D_AGE + 
    D_SmokingStatus + OCS_YN + ICS_YN, data = subset(FEV1_FVC, D_ASTHMA_SEVERITYGRADE_SCREEN == 
    3), link = "logit")

Quantile residuals:
    Min      1Q  Median      3Q     Max 
-2.1629 -0.7218 -0.0402  0.5880  2.7063 

Coefficients (mean model with logit link):
                  Estimate Std. Error z value Pr(>|z|)   
(Intercept)       0.857188   0.748029   1.146  0.25182   
Eotaxin.3        -0.010365   0.034307  -0.302  0.76256   
G.CSF            -0.006248   0.019925  -0.314  0.75383   
IFN.g            -0.025651   0.037082  -0.692  0.48910   
IL.10             0.045452   0.039337   1.155  0.24790   
IL.13             0.056736   0.030149   1.882  0.05986 . 
IL.17            -0.086871   0.044317  -1.960  0.04997 * 
IL.1alpha        -0.037199   0.051090  -0.728  0.46655   
IL.1F7            0.075101   0.047105   1.594  0.11086   
IL.24             0.001854   0.017023   0.109  0.91330   
IL.33            -0.054913   0.022082  -2.487  0.01289 * 
IL.4             -0.036252   0.044819  -0.809  0.41861   
IL.5              0.034094   0.029773   1.145  0.25216   
IL.8             -0.111351   0.056272  -1.979  0.04784 * 
Periostin        -0.018757   0.018574  -1.010  0.31258   
SCGB1A.1          0.135561   0.047246   2.869  0.00411 **
TNF.alpha         0.083914   0.063263   1.326  0.18470   
year2018         -0.154102   0.310920  -0.496  0.62015   
D_SEX1            0.044435   0.096058   0.463  0.64366   
D_AGE            -0.006126   0.004014  -1.526  0.12698   
D_SmokingStatus2 -0.526338   0.249640  -2.108  0.03500 * 
D_SmokingStatus3 -0.184799   0.098586  -1.874  0.06086 . 
OCS_YN1           0.446540   0.154351   2.893  0.00382 **
ICS_YN1          -0.233635   0.153816  -1.519  0.12878   

Phi coefficients (precision model with identity link):
      Estimate Std. Error z value Pr(>|z|)    
(phi)   23.782      3.367   7.064 1.62e-12 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Type of estimator: ML (maximum likelihood)
Log-likelihood: 87.98 on 25 Df
Pseudo R-squared: 0.4082
Number of iterations: 33 (BFGS) + 2 (Fisher scoring) 
Code
confint(fit,level = 0.95)
                        2.5 %        97.5 %
(Intercept)      -0.608922638  2.323298e+00
Eotaxin.3        -0.077606049  5.687586e-02
G.CSF            -0.045300662  3.280413e-02
IFN.g            -0.098331091  4.702855e-02
IL.10            -0.031646806  1.225511e-01
IL.13            -0.002356048  1.158273e-01
IL.17            -0.173730847 -1.176631e-05
IL.1alpha        -0.137333888  6.293574e-02
IL.1F7           -0.017223838  1.674255e-01
IL.24            -0.031511641  3.521871e-02
IL.33            -0.098193622 -1.163311e-02
IL.4             -0.124095982  5.159284e-02
IL.5             -0.024260791  9.244831e-02
IL.8             -0.221642305 -1.059905e-03
Periostin        -0.055161297  1.764801e-02
SCGB1A.1          0.042959597  2.281623e-01
TNF.alpha        -0.040080335  2.079076e-01
year2018         -0.763493917  4.552890e-01
D_SEX1           -0.143835719  2.327050e-01
D_AGE            -0.013993557  1.741572e-03
D_SmokingStatus2 -1.015623005 -3.705254e-02
D_SmokingStatus3 -0.378024948  8.426651e-03
OCS_YN1           0.144018573  7.490621e-01
ICS_YN1          -0.535108383  6.783796e-02
(phi)            17.183029395  3.038036e+01
Code
res<-summary(fit)$coefficients
sig <- res$mean[res$mean[,"Pr(>|z|)"]<=0.05,]

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure5_tables/231218_FEV_FVC_severe.csv"),quote = FALSE)

Figure 22 Effects over significant covariates in FEV1/FVC (Severe)

Code
eff_plot <- Effect(focal.predictors = "IL.17" , fit, xlevels=list(IL.17=seq(min(meta2$IL.17) - 1,max(meta2$IL.17) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.17, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.17, y = L_SPIRO_FEV1_FVC), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.17, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-17 (Severe)\n(Coeff: -0.09; P-value: 0.05)",
       x = expression('log'[2] * '(Expression)'),
       y = "FEV1/FVC [%]") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "IL.33" , fit, xlevels=list(IL.33=seq(min(meta2$IL.33) - 1,max(meta2$IL.33) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.33, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.33, y = L_SPIRO_FEV1_FVC), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.33, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-33 (Severe)\n(Coeff: -0.05; P-value: 0.01)",
       x = expression('log'[2] * '(Expression)'),
       y = "FEV1/FVC [%]") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "IL.8" , fit, xlevels=list(IL.8=seq(min(meta2$IL.8) - 1,max(meta2$IL.8) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.8, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.8, y = L_SPIRO_FEV1_FVC), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.8, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-8 (Severe)\n(Coeff: -0.11; P-value: 0.05)",
       x = expression('log'[2] * '(Expression)'),
       y = "FEV1/FVC [%]") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "SCGB1A.1" , fit, xlevels=list(SCGB1A.1=seq(min(meta2$SCGB1A.1) - 1,max(meta2$SCGB1A.1) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = SCGB1A.1, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = SCGB1A.1, y = L_SPIRO_FEV1_FVC), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = SCGB1A.1, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "SCGB1A1 (Severe)\n(Coeff: 0.14; P-value: 0.004)",
       x = expression('log'[2] * '(Expression)'),
       y = "FEV1/FVC [%]") +
  theme_bw()
(a) Effects for IL-17
(b) Effects for IL-33
(c) Effects for IL-8
(d) Effects for SCGB1a-1
Figure 22: Effects over significant covariates in FEV1/FVC (Severe)
Code
eff_plot <- Effect(focal.predictors = "IL.17" , fit, xlevels=list(IL.17=seq(min(meta2$IL.17) - 1,max(meta2$IL.17) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.17, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.17, y = L_SPIRO_FEV1_FVC), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.17, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-17 (Severe)\n(Coeff: -0.09; P-value: 0.05)",
       x = expression('log'[2] * '(Expression)'),
       y = "FEV1/FVC [%]") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure5/231218_FEVFVC_IL17_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "IL.33" , fit, xlevels=list(IL.33=seq(min(meta2$IL.33) - 1,max(meta2$IL.33) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.33, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.33, y = L_SPIRO_FEV1_FVC), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.33, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-33 (Severe)\n(Coeff: -0.05; P-value: 0.01)",
       x = expression('log'[2] * '(Expression)'),
       y = "FEV1/FVC [%]") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure5/231218_FEVFVC_IL33_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "IL.8" , fit, xlevels=list(IL.8=seq(min(meta2$IL.8) - 1,max(meta2$IL.8) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.8, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.8, y = L_SPIRO_FEV1_FVC), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.8, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-8 (Severe)\n(Coeff: -0.11; P-value: 0.05)",
       x = expression('log'[2] * '(Expression)'),
       y = "FEV1/FVC [%]") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure5/231218_FEVFVC_IL8_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "SCGB1A.1" , fit, xlevels=list(SCGB1A.1=seq(min(meta2$SCGB1A.1) - 1,max(meta2$SCGB1A.1) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = SCGB1A.1, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = SCGB1A.1, y = L_SPIRO_FEV1_FVC), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = SCGB1A.1, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "SCGB1A1 (Severe)\n(Coeff: 0.14; P-value: 0.004)",
       x = expression('log'[2] * '(Expression)'),
       y = "FEV1/FVC [%]") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure5/231218_FEVFVC_SCGB1A1_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
fit2 <- betareg(L_SPIRO_FEV1_FVC ~ D_ASTHMA_SEVERITYGRADE_SCREEN 
           + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
           data = FEV1_FVC)
summary(fit2)

Call:
betareg(formula = L_SPIRO_FEV1_FVC ~ D_ASTHMA_SEVERITYGRADE_SCREEN + 
    year + D_SEX + D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = FEV1_FVC)

Quantile residuals:
    Min      1Q  Median      3Q     Max 
-3.0296 -0.5349 -0.0095  0.6174  2.1723 

Coefficients (mean model with logit link):
                                Estimate Std. Error z value Pr(>|z|)    
(Intercept)                     1.588399   0.124721  12.736  < 2e-16 ***
D_ASTHMA_SEVERITYGRADE_SCREEN1 -0.334040   0.091749  -3.641 0.000272 ***
D_ASTHMA_SEVERITYGRADE_SCREEN2 -0.422280   0.085843  -4.919 8.69e-07 ***
D_ASTHMA_SEVERITYGRADE_SCREEN3 -0.751691   0.090267  -8.327  < 2e-16 ***
year2018                       -0.034207   0.059804  -0.572 0.567327    
D_SEX1                          0.132538   0.055876   2.372 0.017692 *  
D_AGE                          -0.009437   0.002026  -4.658 3.19e-06 ***
D_SmokingStatus2               -0.209626   0.111794  -1.875 0.060778 .  
D_SmokingStatus3               -0.067710   0.060331  -1.122 0.261732    
OCS_YN1                         0.073225   0.107659   0.680 0.496406    
ICS_YN1                         0.025581   0.081214   0.315 0.752778    

Phi coefficients (precision model with identity link):
      Estimate Std. Error z value Pr(>|z|)    
(phi)   20.997      1.749   12.01   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Type of estimator: ML (maximum likelihood)
Log-likelihood: 251.2 on 12 Df
Pseudo R-squared: 0.3616
Number of iterations: 19 (BFGS) + 2 (Fisher scoring) 
Code
confint(fit2,level = 0.95)
                                     2.5 %       97.5 %
(Intercept)                     1.34395050  1.832848261
D_ASTHMA_SEVERITYGRADE_SCREEN1 -0.51386423 -0.154216558
D_ASTHMA_SEVERITYGRADE_SCREEN2 -0.59052922 -0.254030724
D_ASTHMA_SEVERITYGRADE_SCREEN3 -0.92861101 -0.574771501
year2018                       -0.15142010  0.083005654
D_SEX1                          0.02302334  0.242053474
D_AGE                          -0.01340820 -0.005466648
D_SmokingStatus2               -0.42873858  0.009486180
D_SmokingStatus3               -0.18595776  0.050537028
OCS_YN1                        -0.13778289  0.284232705
ICS_YN1                        -0.13359541  0.184756654
(phi)                          17.56961498 24.424974450
Code
##write.csv(summary(fit2)$coefficients, file=paste0(prefix.tables,"231204_figure1_tables/231204_functional_Boxplot_asthma_severity_FEV1_FVC.csv"))

Figure 23 FEV1/FVC value distribution per asthma severity

Code
#pdf(file=paste0(prefix.plots,"_Boxplot_asthma_severity_FEV1_FVC.pdf"), width=10 , height=10)
ggplot(data = FEV1_FVC , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_SPIRO_FEV1_FVC)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), axis.text.y = element_text(size=10), axis.title=element_text(size=10,face="bold"), legend.position = "none", legend.text = element_text(size=10))+ ylim(c(min(meta2$L_SPIRO_FEV1_FVC,na.rm = T),max(meta2$L_SPIRO_FEV1_FVC,na.rm = T) + 0.1)) +
  xlab("")+
  ylab("FEV1/FVC [% pred.]")+
  scale_x_discrete(labels=c("healthy", "mild", "moderate", "severe")) + 
  scale_fill_manual(name= "Severity grade",labels =c("healthy", "mild", "moderate", "severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd")) +
  geom_signif(y_position=max(meta2$L_SPIRO_FEV1_FVC,na.rm = T) + 0.1, xmin=c(1), xmax=c(1),annotation=c("3.75e-37"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_SPIRO_FEV1_FVC,na.rm = T) + 0.1, xmin=c(2), xmax=c(2),annotation=c("2.72e-04"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_SPIRO_FEV1_FVC,na.rm = T) + 0.1, xmin=c(3), xmax=c(3),annotation=c("8.69e-07"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_SPIRO_FEV1_FVC,na.rm = T) + 0.1, xmin=c(4), xmax=c(4),annotation=c("8.26e-17"), tip_length=0,textsize = 2,linetype = "blank")
Figure 23: FEV1/FVC value distribution per asthma severity
Code
to.replace <- c()
for(i in summary(fit2)$coefficients$mean[,4][1:4]){
  if(i < 0.001){
    to.replace <- c(to.replace,"***")
  }else if(i < 0.01){
    to.replace <- c(to.replace,"**")
  }else if(i < 0.05){
    to.replace <- c(to.replace,"*")
  }else if(i < 0.1){
    to.replace <- c(to.replace,"+")
  }else{
    to.replace <- c(to.replace,"n.s.")
  }
}

p <- ggplot(data = FEV1_FVC , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_SPIRO_FEV1_FVC)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), 
                                                                                           axis.text.y = element_text(size=10), 
                                                                                           axis.title.y = element_text(size=10,face="bold"),
                                                                                           axis.title.x =element_blank(), legend.position = "none", 
                                                                                           legend.text = element_text(size=10)) + 
  ylim(c(min(meta2$L_SPIRO_FEV1_FVC,na.rm = T),max(meta2$L_SPIRO_FEV1_FVC,na.rm = T) + 0.1)) +
  ylab("FEV1/FVC [% pred.]") +
  scale_x_discrete(labels=c("Healthy", "Mild", "Moderate", "Severe"))+
  scale_fill_manual(name= "Severity grade",labels =c("Healthy", "Mild", "Moderate", "Severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd" )) +
  geom_signif(y_position=max(meta2$L_SPIRO_FEV1_FVC,na.rm = T) + .05, xmin=c(1), xmax=c(1),annotation=c(to.replace[1]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_SPIRO_FEV1_FVC,na.rm = T) + .05, xmin=c(2), xmax=c(2),annotation=c(to.replace[2]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_SPIRO_FEV1_FVC,na.rm = T) + .05, xmin=c(3), xmax=c(3),annotation=c(to.replace[3]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_SPIRO_FEV1_FVC,na.rm = T) + .05, xmin=c(4), xmax=c(4),annotation=c(to.replace[4]), tip_length=0,textsize = 3.5,linetype = "blank") 

#ggsave(filename = paste0(prefix.plots,"231204_figure1/231204_functional_Boxplot_asthma_severity_FEV1_FVC.pdf"),plot = p,units = "cm",width = 8,height = 8)

3.6 FVC

Code
FVC <-meta2[!is.na(meta2$L_SPIRO_FVCperc), ]
summary(FVC$L_SPIRO_FVCperc) # includes values > 100 --> use linear regression
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   54.0    95.0   106.0   105.2   117.0   149.0 
Code
# linear model
fit <- lm(L_SPIRO_FVCperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = FVC)
summary(fit)

Call:
lm(formula = L_SPIRO_FVCperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = FVC)

Residuals:
    Min      1Q  Median      3Q     Max 
-41.702  -9.980   1.366  10.490  38.119 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)      87.99516   14.34282   6.135 3.26e-09 ***
Eotaxin.3        -0.64111    0.72431  -0.885 0.376928    
G.CSF            -0.55429    0.42442  -1.306 0.192741    
IFN.g            -1.69772    0.80227  -2.116 0.035311 *  
IL.10             1.38348    0.78421   1.764 0.078909 .  
IL.13             0.03814    0.60940   0.063 0.950145    
IL.17             0.27319    1.00006   0.273 0.784943    
IL.1alpha        -0.42322    0.99546  -0.425 0.671085    
IL.1F7           -0.02280    0.95199  -0.024 0.980915    
IL.24             0.77682    0.37943   2.047 0.041660 *  
IL.33             0.71397    0.43344   1.647 0.100755    
IL.4             -0.72672    0.90971  -0.799 0.425129    
IL.5              0.79826    0.58399   1.367 0.172867    
IL.8              1.43599    0.88405   1.624 0.105550    
Periostin        -0.44536    0.41859  -1.064 0.288369    
SCGB1A.1          0.36084    0.75419   0.478 0.632748    
TNF.alpha        -0.88760    1.04769  -0.847 0.397687    
year2018          6.11631    6.72377   0.910 0.363871    
D_SEX1            7.55228    2.12921   3.547 0.000464 ***
D_AGE             0.09020    0.07110   1.269 0.205748    
D_SmokingStatus2 -2.16455    4.11991  -0.525 0.599774    
D_SmokingStatus3  2.99964    2.20966   1.358 0.175829    
OCS_YN1          -9.18509    3.53203  -2.601 0.009856 ** 
ICS_YN1          -2.45204    2.83622  -0.865 0.388108    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 16.02 on 253 degrees of freedom
Multiple R-squared:  0.2038,    Adjusted R-squared:  0.1314 
F-statistic: 2.815 on 23 and 253 DF,  p-value: 3.852e-05
Code
confint(fit,level = 0.95)
                        2.5 %      97.5 %
(Intercept)       59.74862680 116.2417022
Eotaxin.3         -2.06756190   0.7853420
G.CSF             -1.39014937   0.2815596
IFN.g             -3.27770130  -0.1177306
IL.10             -0.16092399   2.9278840
IL.13             -1.16199822   1.2382793
IL.17             -1.69631557   2.2426952
IL.1alpha         -2.38366386   1.5372164
IL.1F7            -1.89764013   1.8520471
IL.24              0.02956900   1.5240624
IL.33             -0.13963983   1.5675741
IL.4              -2.51829149   1.0648526
IL.5              -0.35183917   1.9483572
IL.8              -0.30504522   3.1770317
Periostin         -1.26972938   0.3790117
SCGB1A.1          -1.12445893   1.8461367
TNF.alpha         -2.95090456   1.1757077
year2018          -7.12538611  19.3580078
D_SEX1             3.35905669  11.7455050
D_AGE             -0.04982635   0.2302252
D_SmokingStatus2 -10.27823821   5.9491392
D_SmokingStatus3  -1.35203551   7.3513183
OCS_YN1          -16.14101790  -2.2291637
ICS_YN1           -8.03764967   3.1335707
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,][-1,] 

Figure 24 Effects over significant covariates in FVC

Code
plot(Effect(focal.predictors = "IFN.g" , fit), rug = FALSE,  main="IFN-g\n(Coeff: -1.7; P-value: 0.04)", ylab= "FVC [%pred.]",  xlab= "log2(Expression)",rescale.axis=F, ylim=c(0,140) )#
plot(Effect(focal.predictors = "IL.24" , fit), rug = FALSE,  main="IL-24\n(Coeff: 0.78; P-value: 0.04)", ylab= "FVC [%pred.]",  xlab= "log2(Expression)",rescale.axis=F, ylim=c(0,140) )#
(a) Effects for IFN-g
(b) Effects for IL-24
Figure 24: Effects over significant covariates in FVC
WARNING: OCS could not be used because all mild cases are equal to 0. The model needs at least one sample with OCS equal. to 1 to contrast.

Figure 25 Effects over significant covariates in FVC (Mild)

Code
fit <- lm(L_SPIRO_FVCperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + ICS_YN,
          data = subset(FVC, D_ASTHMA_SEVERITYGRADE_SCREEN==1))
summary(fit)
Code
confint(fit,level = 0.95)
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure5_tables/231218_FVC_mild.csv"),quote = FALSE)

Call:
lm(formula = L_SPIRO_FVCperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + ICS_YN, data = subset(FVC, D_ASTHMA_SEVERITYGRADE_SCREEN == 
    1))

Residuals:
     Min       1Q   Median       3Q      Max 
-30.8883  -5.8867   0.5857   7.5387  22.1041 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)  
(Intercept)       60.054747  46.160795   1.301   0.2043  
Eotaxin.3         -1.006783   1.873013  -0.538   0.5953  
G.CSF             -1.948761   1.268430  -1.536   0.1361  
IFN.g             -0.639188   2.061278  -0.310   0.7589  
IL.10              3.607112   3.137245   1.150   0.2603  
IL.13             -2.999558   1.474847  -2.034   0.0519 .
IL.17             -1.540580   3.113444  -0.495   0.6247  
IL.1alpha         -0.707899   3.132247  -0.226   0.8229  
IL.1F7             1.948340   3.751313   0.519   0.6077  
IL.24             -0.006683   1.234564  -0.005   0.9957  
IL.33             -0.709573   1.114654  -0.637   0.5298  
IL.4              -0.256334   2.538758  -0.101   0.9203  
IL.5              -0.290036   2.075052  -0.140   0.8899  
IL.8               4.874231   2.803765   1.738   0.0935 .
Periostin         -0.420977   1.541966  -0.273   0.7869  
SCGB1A.1          -0.088588   2.933889  -0.030   0.9761  
TNF.alpha         -0.591183   3.216532  -0.184   0.8555  
year2018          -0.819353  25.933643  -0.032   0.9750  
D_SEX1             7.122586   5.603505   1.271   0.2145  
D_AGE              0.064139   0.201439   0.318   0.7526  
D_SmokingStatus2 -10.097246  13.629552  -0.741   0.4652  
D_SmokingStatus3   7.779455   6.608799   1.177   0.2494  
ICS_YN1           -0.325834   6.319763  -0.052   0.9593  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 14.8 on 27 degrees of freedom
Multiple R-squared:  0.5407,    Adjusted R-squared:  0.1664 
F-statistic: 1.445 on 22 and 27 DF,  p-value: 0.1805
                       2.5 %       97.5 %
(Intercept)      -34.6593807 154.76887511
Eotaxin.3         -4.8498880   2.83632101
G.CSF             -4.5513647   0.65384256
IFN.g             -4.8685805   3.59020460
IL.10             -2.8299824  10.04420609
IL.13             -6.0256939   0.02657789
IL.17             -7.9288401   4.84767921
IL.1alpha         -7.1347393   5.71894112
IL.1F7            -5.7487192   9.64539896
IL.24             -2.5397984   2.52643258
IL.33             -2.9966542   1.57750914
IL.4              -5.4654355   4.95276656
IL.5              -4.5476918   3.96761973
IL.8              -0.8786196  10.62708089
Periostin         -3.5848295   2.74287550
SCGB1A.1          -6.1084314   5.93125614
TNF.alpha         -7.1909602   6.00859509
year2018         -54.0307927  52.39208709
D_SEX1            -4.3748574  18.62002912
D_AGE             -0.3491791   0.47745685
D_SmokingStatus2 -38.0627756  17.86828382
D_SmokingStatus3  -5.7806796  21.33958946
ICS_YN1          -13.2929172  12.64124833
Figure 25: Effects over significant covariates in FVC (Mild)
Code
fit <- lm(L_SPIRO_FVCperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = subset(FVC, D_ASTHMA_SEVERITYGRADE_SCREEN==2))
summary(fit)

Call:
lm(formula = L_SPIRO_FVCperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = subset(FVC, 
    D_ASTHMA_SEVERITYGRADE_SCREEN == 2))

Residuals:
    Min      1Q  Median      3Q     Max 
-30.781  -7.995   2.452   8.488  24.008 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)  
(Intercept)      70.41953   30.71471   2.293   0.0266 *
Eotaxin.3        -0.92471    1.79892  -0.514   0.6097  
G.CSF            -0.47434    0.79410  -0.597   0.5533  
IFN.g            -2.07501    1.77060  -1.172   0.2474  
IL.10             1.17424    1.49366   0.786   0.4359  
IL.13             0.26046    1.64850   0.158   0.8752  
IL.17            -0.13053    2.48571  -0.053   0.9584  
IL.1alpha         3.49198    2.40822   1.450   0.1540  
IL.1F7           -1.22548    2.55865  -0.479   0.6343  
IL.24             0.25395    0.75229   0.338   0.7373  
IL.33             0.35080    0.96250   0.364   0.7172  
IL.4              1.87078    1.92170   0.974   0.3355  
IL.5              0.01212    1.13312   0.011   0.9915  
IL.8              1.54007    1.55752   0.989   0.3280  
Periostin         0.29003    0.98419   0.295   0.7696  
SCGB1A.1          0.24612    1.12725   0.218   0.8282  
TNF.alpha        -3.10627    1.67559  -1.854   0.0703 .
year2018          5.05268   15.65312   0.323   0.7483  
D_SEX1            6.29852    4.54961   1.384   0.1731  
D_AGE             0.11239    0.14413   0.780   0.4396  
D_SmokingStatus2  1.68758    9.37714   0.180   0.8580  
D_SmokingStatus3  3.79350    4.69790   0.807   0.4236  
OCS_YN1          29.95100   17.91590   1.672   0.1015  
ICS_YN1          -1.72228    4.49506  -0.383   0.7034  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 15 on 45 degrees of freedom
Multiple R-squared:  0.2547,    Adjusted R-squared:  -0.1263 
F-statistic: 0.6685 on 23 and 45 DF,  p-value: 0.8501
Code
confint(fit,level = 0.95)
                       2.5 %      97.5 %
(Intercept)        8.5569211 132.2821420
Eotaxin.3         -4.5479246   2.6985078
G.CSF             -2.0737435   1.1250621
IFN.g             -5.6411811   1.4911550
IL.10             -1.8341445   4.1826209
IL.13             -3.0598009   3.5807158
IL.17             -5.1370056   4.8759386
IL.1alpha         -1.3584193   8.3423709
IL.1F7            -6.3788558   3.9279009
IL.24             -1.2612429   1.7691457
IL.33             -1.5877764   2.2893760
IL.4              -1.9997246   5.7412884
IL.5              -2.2700907   2.2943370
IL.8              -1.5969356   4.6770841
Periostin         -1.6922310   2.2722840
SCGB1A.1          -2.0242717   2.5165103
TNF.alpha         -6.4810853   0.2685382
year2018         -26.4743166  36.5796773
D_SEX1            -2.8648650  15.4619130
D_AGE             -0.1779125   0.4026867
D_SmokingStatus2 -17.1989406  20.5741106
D_SmokingStatus3  -5.6685559  13.2555477
OCS_YN1           -6.1334719  66.0354654
ICS_YN1          -10.7757936   7.3312328
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure5_tables/231218_FVC_moderate.csv"),quote = FALSE)
Code
fit <- lm(L_SPIRO_FVCperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = subset(FVC, D_ASTHMA_SEVERITYGRADE_SCREEN==3))
summary(fit)

Call:
lm(formula = L_SPIRO_FVCperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = subset(FVC, 
    D_ASTHMA_SEVERITYGRADE_SCREEN == 3))

Residuals:
    Min      1Q  Median      3Q     Max 
-34.846  -9.041  -0.127   9.548  37.572 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)      125.5985    29.6597   4.235 6.67e-05 ***
Eotaxin.3          0.4133     1.3706   0.302  0.76385    
G.CSF              0.5719     0.7913   0.723  0.47217    
IFN.g             -3.2434     1.4676  -2.210  0.03028 *  
IL.10              4.1765     1.5719   2.657  0.00971 ** 
IL.13              1.4648     1.1887   1.232  0.22186    
IL.17             -0.4436     1.7568  -0.252  0.80138    
IL.1alpha         -1.8316     2.0251  -0.904  0.36877    
IL.1F7             2.0642     1.8785   1.099  0.27549    
IL.24              1.7109     0.6807   2.513  0.01419 *  
IL.33              0.6866     0.8701   0.789  0.43262    
IL.4              -0.5018     1.7289  -0.290  0.77245    
IL.5               0.8721     1.1886   0.734  0.46549    
IL.8              -1.9318     2.2305  -0.866  0.38932    
Periostin         -0.3083     0.7248  -0.425  0.67184    
SCGB1A.1           1.2357     1.8792   0.658  0.51292    
TNF.alpha         -2.8823     2.4894  -1.158  0.25077    
year2018          -3.8460    12.2603  -0.314  0.75466    
D_SEX1            11.3229     3.8152   2.968  0.00407 ** 
D_AGE             -0.0439     0.1591  -0.276  0.78333    
D_SmokingStatus2 -10.8761     9.9371  -1.094  0.27739    
D_SmokingStatus3   4.1982     3.9057   1.075  0.28601    
OCS_YN1           -5.7346     6.1704  -0.929  0.35580    
ICS_YN1            5.4631     6.1634   0.886  0.37836    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 16.42 on 72 degrees of freedom
Multiple R-squared:  0.4215,    Adjusted R-squared:  0.2366 
F-statistic:  2.28 on 23 and 72 DF,  p-value: 0.004277
Code
confint(fit,level = 0.95)
                       2.5 %      97.5 %
(Intercept)       66.4729947 184.7239662
Eotaxin.3         -2.3189221   3.1455999
G.CSF             -1.0055623   2.1494418
IFN.g             -6.1690089  -0.3177953
IL.10              1.0428913   7.3101484
IL.13             -0.9048388   3.8344005
IL.17             -3.9456828   3.0585488
IL.1alpha         -5.8686296   2.2053537
IL.1F7            -1.6804673   5.8088416
IL.24              0.3539665   3.0677463
IL.33             -1.0479018   2.4211903
IL.4              -3.9484114   2.9447319
IL.5              -1.4972528   3.2414453
IL.8              -6.3781085   2.5145600
Periostin         -1.7532207   1.1365941
SCGB1A.1          -2.5104747   4.9818963
TNF.alpha         -7.8448940   2.0802872
year2018         -28.2865402  20.5944302
D_SEX1             3.7174035  18.9283843
D_AGE             -0.3610055   0.2731962
D_SmokingStatus2 -30.6853797   8.9332510
D_SmokingStatus3  -3.5876668  11.9841361
OCS_YN1          -18.0351860   6.5659107
ICS_YN1           -6.8234029  17.7497009
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,][-1,]

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure5_tables/231218_FVC_severe.csv"),quote = FALSE)

Figure 26 Effects over significant covariates in FVC (Severe)

Code
eff_plot <- Effect(focal.predictors = "IFN.g" , fit, xlevels=list(IFN.g=seq(min(meta2$IFN.g) - 1,max(meta2$IFN.g) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IFN.g, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IFN.g, y = L_SPIRO_FVCperc), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IFN.g, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IFN-g (Severe)\n(Coeff: -3.24; P-value: 0.03)",
       x = expression('log'[2] * '(Expression)'),
       y = "FVC [%pred.]") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "IL.10" , fit, xlevels=list(IL.10=seq(min(meta2$IL.10) - 1,max(meta2$IL.10) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.10, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.10, y = L_SPIRO_FVCperc), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.10, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-10 (Severe)\n(Coeff: 4.18; P-value: 0.01)",
       x = expression('log'[2] * '(Expression)'),
       y = "FVC [%pred.]") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "IL.24" , fit, xlevels=list(IL.24=seq(min(meta2$IL.24) - 1,max(meta2$IL.24) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.24, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.24, y = L_SPIRO_FVCperc), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.24, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-24 (Severe)\n(Coeff: 1.71; P-value: 0.01)",
       x = expression('log'[2] * '(Expression)'),
       y = "FVC [%pred.]") +
  theme_bw()
(a) Effects for IFN-g
(b) Effects for IL-10
(c) Effects for IL-24
Figure 26: Effects over significant covariates in FVC (Severe)
Code
eff_plot <- Effect(focal.predictors = "IFN.g" , fit, xlevels=list(IFN.g=seq(min(meta2$IFN.g) - 1,max(meta2$IFN.g) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IFN.g, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IFN.g, y = L_SPIRO_FVCperc), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IFN.g, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IFN-g (Severe)\n(Coeff: -3.24; P-value: 0.03)",
       x = expression('log'[2] * '(Expression)'),
       y = "FVC [%pred.]") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure5/231218_FVC_IFNg_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "IL.10" , fit, xlevels=list(IL.10=seq(min(meta2$IL.10) - 1,max(meta2$IL.10) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.10, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.10, y = L_SPIRO_FVCperc), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.10, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-10 (Severe)\n(Beta=4.18; p=0.01)",
       x = "Normalized abundances",
       y = "FVC [%pred.]") +
  theme_bw()

ggsave(filename = paste0(prefix.plots,"Fig3/fvc_IL10_severe.pdf"),plot = p, width = 7,height = 7,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "IL.24" , fit, xlevels=list(IL.24=seq(min(meta2$IL.24) - 1,max(meta2$IL.24) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.24, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.24, y = L_SPIRO_FVCperc), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.24, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-24 (Severe)\n(Coeff: 1.71; P-value: 0.01)",
       x = expression('log'[2] * '(Expression)'),
       y = "FVC [%pred.]") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure5/231218_FVC_IL24_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
fit2 <- lm(L_SPIRO_FVCperc ~ D_ASTHMA_SEVERITYGRADE_SCREEN 
           + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
           data = FVC)
summary(fit2)

Call:
lm(formula = L_SPIRO_FVCperc ~ D_ASTHMA_SEVERITYGRADE_SCREEN + 
    year + D_SEX + D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, 
    data = FVC)

Residuals:
    Min      1Q  Median      3Q     Max 
-43.365  -8.770   0.653  10.073  56.207 

Coefficients:
                                Estimate Std. Error t value Pr(>|t|)    
(Intercept)                    102.79146    4.00769  25.649  < 2e-16 ***
D_ASTHMA_SEVERITYGRADE_SCREEN1  -2.49194    3.00178  -0.830 0.407195    
D_ASTHMA_SEVERITYGRADE_SCREEN2  -9.93949    2.82579  -3.517 0.000512 ***
D_ASTHMA_SEVERITYGRADE_SCREEN3 -15.24443    3.04292  -5.010 9.94e-07 ***
year2018                        -3.22978    2.03194  -1.590 0.113134    
D_SEX1                           8.45137    1.89996   4.448 1.27e-05 ***
D_AGE                            0.14658    0.06745   2.173 0.030663 *  
D_SmokingStatus2                -5.29436    3.81260  -1.389 0.166101    
D_SmokingStatus3                 3.11384    2.06066   1.511 0.131953    
OCS_YN1                         -4.15978    3.77307  -1.102 0.271245    
ICS_YN1                          0.84087    2.78979   0.301 0.763338    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 15.41 on 266 degrees of freedom
Multiple R-squared:  0.2248,    Adjusted R-squared:  0.1957 
F-statistic: 7.715 on 10 and 266 DF,  p-value: 7.769e-11
Code
confint(fit2,level = 0.95)
                                      2.5 %      97.5 %
(Intercept)                     94.90062026 110.6822952
D_ASTHMA_SEVERITYGRADE_SCREEN1  -8.40220396   3.4183239
D_ASTHMA_SEVERITYGRADE_SCREEN2 -15.50325397  -4.3757293
D_ASTHMA_SEVERITYGRADE_SCREEN3 -21.23570364  -9.2531581
year2018                        -7.23050473   0.7709503
D_SEX1                           4.71049274  12.1922374
D_AGE                            0.01376566   0.2793872
D_SmokingStatus2               -12.80106604   2.2123528
D_SmokingStatus3                -0.94344272   7.1711300
OCS_YN1                        -11.58866222   3.2691066
ICS_YN1                         -4.65201914   6.3337594
Code
##write.csv(summary(fit2)$coefficients, file=paste0(prefix.tables,"231204_figure1_tables/231204_functional_Boxplot_asthma_severity_FVC.csv"))

Figure 27 FVC value distribution per asthma severity

Code
#pdf(file=paste0(prefix.plots,"_Boxplot_asthma_severity_FVC.pdf"), width=10 , height=10)
ggplot(data = FVC , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_SPIRO_FVCperc)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), axis.text.y = element_text(size=10), axis.title=element_text(size=10,face="bold"), legend.position = "none", legend.text = element_text(size=10))+ ylim(c(min(meta2$L_SPIRO_FVCperc,na.rm = T),max(meta2$L_SPIRO_FVCperc,na.rm = T) + 10)) +
  xlab("")+
  ylab("FVC [% pred.]")+
  scale_x_discrete(labels=c("healthy", "mild", "moderate", "severe"))+ 
  scale_fill_manual(name= "Severity grade",labels =c("healthy", "mild", "moderate", "severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd")) +
  geom_signif(y_position=max(meta2$L_SPIRO_FVCperc,na.rm = T) + 10, xmin=c(1), xmax=c(1),annotation=c("7.02e-74"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_SPIRO_FVCperc,na.rm = T) + 10, xmin=c(2), xmax=c(2),annotation=c("0.41"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_SPIRO_FVCperc,na.rm = T) + 10, xmin=c(3), xmax=c(3),annotation=c("5.12e-4"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_SPIRO_FVCperc,na.rm = T) + 10, xmin=c(4), xmax=c(4),annotation=c("9.94e-7"), tip_length=0,textsize = 2,linetype = "blank")
Figure 27: FVC value distribution per asthma severity
Code
to.replace <- c()
for(i in summary(fit2)$coefficients[,4][1:4]){
  if(i < 0.001){
    to.replace <- c(to.replace,"***")
  }else if(i < 0.01){
    to.replace <- c(to.replace,"**")
  }else if(i < 0.05){
    to.replace <- c(to.replace,"*")
  }else if(i < 0.1){
    to.replace <- c(to.replace,"+")
  }else{
    to.replace <- c(to.replace,"n.s.")
  }
}

p <- ggplot(data = FVC , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_SPIRO_FVCperc)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), 
                                                                                           axis.text.y = element_text(size=10), 
                                                                                           axis.title.y = element_text(size=10,face="bold"),
                                                                                           axis.title.x =element_blank(), legend.position = "none", 
                                                                                           legend.text = element_text(size=10)) + 
  ylim(c(min(meta2$L_SPIRO_FVCperc,na.rm = T),max(meta2$L_SPIRO_FVCperc,na.rm = T) + 10)) +
  ylab("FVC [% pred.]") +
  scale_x_discrete(labels=c("Healthy", "Mild", "Moderate", "Severe"))+
  scale_fill_manual(name= "Severity grade",labels =c("Healthy", "Mild", "Moderate", "Severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd" )) +
  geom_signif(y_position=max(meta2$L_SPIRO_FVCperc,na.rm = T) + 5, xmin=c(1), xmax=c(1),annotation=c(to.replace[1]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_SPIRO_FVCperc,na.rm = T) + 5, xmin=c(2), xmax=c(2),annotation=c(to.replace[2]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_SPIRO_FVCperc,na.rm = T) + 5, xmin=c(3), xmax=c(3),annotation=c(to.replace[3]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_SPIRO_FVCperc,na.rm = T) + 5, xmin=c(4), xmax=c(4),annotation=c(to.replace[4]), tip_length=0,textsize = 3.5,linetype = "blank") 

#ggsave(filename = paste0(prefix.plots,"231204_figure1/231204_functional_Boxplot_asthma_severity_FVC.pdf"),plot = p,units = "cm",width = 8,height = 8)

3.7 RV

Code
RV <-meta2[!is.na(meta2$L_BODY_RVperc), ]
summary(RV$L_BODY_RVperc) # includes values > 100 --> use linear regression
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  65.33  101.18  118.37  124.27  142.23  267.71 
Code
# linear model
fit <- lm(L_BODY_RVperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = RV)
summary(fit)

Call:
lm(formula = L_BODY_RVperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = RV)

Residuals:
    Min      1Q  Median      3Q     Max 
-66.252 -20.742  -5.075  15.860 118.698 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)      134.37567   26.71702   5.030 9.28e-07 ***
Eotaxin.3          0.50656    1.35197   0.375  0.70821    
G.CSF              0.70327    0.78551   0.895  0.37147    
IFN.g              2.75857    1.49369   1.847  0.06593 .  
IL.10             -0.68474    1.45193  -0.472  0.63761    
IL.13              0.04138    1.13859   0.036  0.97104    
IL.17              1.04134    1.83755   0.567  0.57142    
IL.1alpha         -1.41232    1.85173  -0.763  0.44635    
IL.1F7            -1.05540    1.77240  -0.595  0.55206    
IL.24              0.17264    0.70940   0.243  0.80793    
IL.33              0.19289    0.80745   0.239  0.81138    
IL.4               0.51606    1.70055   0.303  0.76178    
IL.5              -1.17272    1.09009  -1.076  0.28303    
IL.8              -0.29275    1.64974  -0.177  0.85930    
Periostin          0.53604    0.77555   0.691  0.49008    
SCGB1A.1          -0.12206    1.40526  -0.087  0.93085    
TNF.alpha         -0.68539    1.95020  -0.351  0.72555    
year2018          -3.62237   12.55603  -0.288  0.77320    
D_SEX1             5.20146    3.96992   1.310  0.19130    
D_AGE             -0.02003    0.13255  -0.151  0.88000    
D_SmokingStatus2  20.59377    7.68594   2.679  0.00786 ** 
D_SmokingStatus3   2.29425    4.11225   0.558  0.57740    
OCS_YN1           15.25237    6.53633   2.333  0.02040 *  
ICS_YN1            2.42201    5.24678   0.462  0.64475    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 29.9 on 255 degrees of freedom
Multiple R-squared:   0.16, Adjusted R-squared:  0.08423 
F-statistic: 2.112 on 23 and 255 DF,  p-value: 0.002786
Code
confint(fit,level = 0.95)
                       2.5 %      97.5 %
(Intercept)       81.7615492 186.9897809
Eotaxin.3         -2.1558932   3.1690055
G.CSF             -0.8436381   2.2501734
IFN.g             -0.1829728   5.7001043
IL.10             -3.5440437   2.1745548
IL.13             -2.2008566   2.2836178
IL.17             -2.5773632   4.6600353
IL.1alpha         -5.0589635   2.2343154
IL.1F7            -4.5458122   2.4350104
IL.24             -1.2243992   1.5696716
IL.33             -1.3972165   1.7830042
IL.4              -2.8328504   3.8649756
IL.5              -3.3194431   0.9740010
IL.8              -3.5415994   2.9561079
Periostin         -0.9912466   2.0633357
SCGB1A.1          -2.8894513   2.6453405
TNF.alpha         -4.5259373   3.1551626
year2018         -28.3490918  21.1043586
D_SEX1            -2.6165342  13.0194589
D_AGE             -0.2810677   0.2410048
D_SmokingStatus2   5.4577664  35.7297670
D_SmokingStatus3  -5.8040359  10.3925430
OCS_YN1            2.3803035  28.1244463
ICS_YN1           -7.9105378  12.7545556
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,][-1,] 
WARNING: OCS could not be used because all mild cases are equal to 0. The model needs at least one sample with OCS equal. to 1 to contrast.
Code
fit <- lm(L_BODY_RVperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + ICS_YN,
          data = subset(RV,D_ASTHMA_SEVERITYGRADE_SCREEN==1))
summary(fit)

Call:
lm(formula = L_BODY_RVperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + ICS_YN, data = subset(RV, D_ASTHMA_SEVERITYGRADE_SCREEN == 
    1))

Residuals:
    Min      1Q  Median      3Q     Max 
-45.195 -12.624  -3.399  10.214  53.103 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)  
(Intercept)       -6.3852    91.4608  -0.070   0.9448  
Eotaxin.3         -3.8334     3.7160  -1.032   0.3111  
G.CSF              1.3470     2.2750   0.592   0.5586  
IFN.g              1.4532     3.9022   0.372   0.7124  
IL.10              6.7649     6.2329   1.085   0.2870  
IL.13              1.0094     2.9018   0.348   0.7305  
IL.17             -7.2826     5.9235  -1.229   0.2291  
IL.1alpha          2.3193     5.9943   0.387   0.7017  
IL.1F7           -14.9780     7.3578  -2.036   0.0513 .
IL.24              2.5856     2.4451   1.057   0.2994  
IL.33             -1.1030     2.2149  -0.498   0.6224  
IL.4               4.3162     5.0456   0.855   0.3996  
IL.5               0.7081     4.0900   0.173   0.8638  
IL.8               3.2132     5.4373   0.591   0.5593  
Periostin         -0.6035     2.8532  -0.212   0.8340  
SCGB1A.1           8.3119     5.5360   1.501   0.1444  
TNF.alpha         -4.9484     6.1458  -0.805   0.4275  
year2018          65.4130    51.5498   1.269   0.2149  
D_SEX1           -13.7079    10.6678  -1.285   0.2093  
D_AGE             -0.1165     0.3992  -0.292   0.7726  
D_SmokingStatus2  -2.6200    26.0405  -0.101   0.9206  
D_SmokingStatus3  -0.1623    12.6460  -0.013   0.9898  
ICS_YN1            4.9125    12.4660   0.394   0.6965  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 29.43 on 28 degrees of freedom
Multiple R-squared:  0.378, Adjusted R-squared:  -0.1107 
F-statistic: 0.7734 on 22 and 28 DF,  p-value: 0.7294
Code
confint(fit,level = 0.95)
                        2.5 %       97.5 %
(Intercept)      -193.7341762 180.96385793
Eotaxin.3         -11.4451908   3.77846414
G.CSF              -3.3132253   6.00718037
IFN.g              -6.5400902   9.44645355
IL.10              -6.0026092  19.53238460
IL.13              -4.9346576   6.95350029
IL.17             -19.4163032   4.85104153
IL.1alpha          -9.9595053  14.59813668
IL.1F7            -30.0498506   0.09378201
IL.24              -2.4230529   7.59418472
IL.33              -5.6400986   3.43403517
IL.4               -6.0192500  14.65158972
IL.5               -7.6698034   9.08605242
IL.8               -7.9245398  14.35086457
Periostin          -6.4480138   5.24092314
SCGB1A.1           -3.0281514  19.65187315
TNF.alpha         -17.5376363   7.64075812
year2018          -40.1820359 171.00808471
D_SEX1            -35.5598680   8.14401196
D_AGE              -0.9342567   0.70131150
D_SmokingStatus2  -55.9614598  50.72152244
D_SmokingStatus3  -26.0665571  25.74191652
ICS_YN1           -20.6228794  30.44790082
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure5_tables/231218_RV_mild.csv"),quote = FALSE)
Code
fit <- lm(L_BODY_RVperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = subset(RV,D_ASTHMA_SEVERITYGRADE_SCREEN==2))
summary(fit)

Call:
lm(formula = L_BODY_RVperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = subset(RV, 
    D_ASTHMA_SEVERITYGRADE_SCREEN == 2))

Residuals:
    Min      1Q  Median      3Q     Max 
-42.152 -14.960  -4.176  12.870  72.860 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)   
(Intercept)      193.4752    59.3200   3.262  0.00214 **
Eotaxin.3          0.3788     3.4447   0.110  0.91294   
G.CSF              0.2523     1.5151   0.167  0.86850   
IFN.g             -4.0391     3.3778  -1.196  0.23818   
IL.10              0.0744     2.8492   0.026  0.97928   
IL.13              6.0392     3.1745   1.902  0.06368 . 
IL.17              4.9513     4.7398   1.045  0.30191   
IL.1alpha         -7.9105     4.6098  -1.716  0.09320 . 
IL.1F7             3.2738     4.9157   0.666  0.50889   
IL.24              1.2466     1.4497   0.860  0.39452   
IL.33              1.5701     1.8357   0.855  0.39700   
IL.4              -2.9144     3.6808  -0.792  0.43273   
IL.5              -0.1876     2.1963  -0.085  0.93232   
IL.8              -1.1430     2.9741  -0.384  0.70260   
Periostin         -2.3964     1.9033  -1.259  0.21465   
SCGB1A.1           0.8277     2.1566   0.384  0.70297   
TNF.alpha          2.8024     3.1976   0.876  0.38557   
year2018          -4.6766    29.8870  -0.156  0.87637   
D_SEX1            -6.1704     8.7767  -0.703  0.48573   
D_AGE             -0.1381     0.2783  -0.496  0.62230   
D_SmokingStatus2  43.8708    17.9178   2.448  0.01840 * 
D_SmokingStatus3   2.8593     9.0891   0.315  0.75456   
OCS_YN1          -11.7423    34.6230  -0.339  0.73611   
ICS_YN1          -10.9105     8.6647  -1.259  0.21460   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 28.61 on 44 degrees of freedom
Multiple R-squared:  0.4086,    Adjusted R-squared:  0.09949 
F-statistic: 1.322 on 23 and 44 DF,  p-value: 0.2092
Code
confint(fit,level = 0.95)
                       2.5 %      97.5 %
(Intercept)       73.9235881 313.0267740
Eotaxin.3         -6.5635734   7.3211096
G.CSF             -2.8011261   3.3057680
IFN.g            -10.8466350   2.7683561
IL.10             -5.6677640   5.8165705
IL.13             -0.3585978  12.4370350
IL.17             -4.6012239  14.5038186
IL.1alpha        -17.2010187   1.3800794
IL.1F7            -6.6330266  13.1806431
IL.24             -1.6751244   4.1682589
IL.33             -2.1294981   5.2698061
IL.4             -10.3324293   4.5036896
IL.5              -4.6139012   4.2387244
IL.8              -7.1369024   4.8509663
Periostin         -6.2322591   1.4395323
SCGB1A.1          -3.5186593   5.1741464
TNF.alpha         -3.6419722   9.2468775
year2018         -64.9099331  55.5566725
D_SEX1           -23.8585886  11.5177429
D_AGE             -0.6990633   0.4228929
D_SmokingStatus2   7.7598766  79.9816733
D_SmokingStatus3 -15.4586137  21.1772519
OCS_YN1          -81.5204796  58.0358483
ICS_YN1          -28.3729582   6.5520378
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,][-1,]

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure5_tables/231218_RV_moderate.csv"),quote = FALSE)
Code
fit <- lm(L_BODY_RVperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = subset(RV,D_ASTHMA_SEVERITYGRADE_SCREEN==3))
summary(fit)

Call:
lm(formula = L_BODY_RVperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = subset(RV, 
    D_ASTHMA_SEVERITYGRADE_SCREEN == 3))

Residuals:
    Min      1Q  Median      3Q     Max 
-62.824 -16.691  -2.515  16.224  65.652 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)      173.3785    49.2246   3.522 0.000737 ***
Eotaxin.3          2.0380     2.3017   0.885 0.378804    
G.CSF              0.7442     1.3208   0.563 0.574845    
IFN.g              3.1619     2.4699   1.280 0.204483    
IL.10             -4.0430     2.6487  -1.526 0.131168    
IL.13             -5.1037     1.9947  -2.559 0.012554 *  
IL.17              4.7189     2.8934   1.631 0.107159    
IL.1alpha          2.1242     3.3678   0.631 0.530153    
IL.1F7            -2.1689     3.1461  -0.689 0.492730    
IL.24             -0.4582     1.1472  -0.399 0.690735    
IL.33              4.3656     1.4477   3.015 0.003514 ** 
IL.4               2.9686     2.9134   1.019 0.311547    
IL.5              -2.6601     2.0079  -1.325 0.189308    
IL.8               5.8737     3.7508   1.566 0.121622    
Periostin          0.1969     1.2124   0.162 0.871399    
SCGB1A.1         -12.6255     3.1692  -3.984 0.000157 ***
TNF.alpha         -4.6029     4.1967  -1.097 0.276284    
year2018          -4.7272    20.7107  -0.228 0.820080    
D_SEX1            15.5819     6.3807   2.442 0.016994 *  
D_AGE             -0.2081     0.2628  -0.792 0.430979    
D_SmokingStatus2  37.7149    16.7950   2.246 0.027715 *  
D_SmokingStatus3  14.7351     6.4555   2.283 0.025330 *  
OCS_YN1          -24.5254    10.3558  -2.368 0.020484 *  
ICS_YN1           20.8802    10.3203   2.023 0.046663 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 27.75 on 74 degrees of freedom
Multiple R-squared:  0.4946,    Adjusted R-squared:  0.3375 
F-statistic: 3.149 on 23 and 74 DF,  p-value: 9.972e-05
Code
confint(fit,level = 0.95)
                       2.5 %      97.5 %
(Intercept)       75.2963810 271.4605696
Eotaxin.3         -2.5483014   6.6242158
G.CSF             -1.8876385   3.3760484
IFN.g             -1.7594873   8.0832756
IL.10             -9.3206384   1.2346061
IL.13             -9.0783033  -1.1291152
IL.17             -1.0463638  10.4841466
IL.1alpha         -4.5863144   8.8347730
IL.1F7            -8.4377270   4.0998679
IL.24             -2.7440014   1.8275934
IL.33              1.4809456   7.2502220
IL.4              -2.8364802   8.7737209
IL.5              -6.6609299   1.3407223
IL.8              -1.5999999  13.3473999
Periostin         -2.2188297   2.6127277
SCGB1A.1         -18.9403241  -6.3106773
TNF.alpha        -12.9649830   3.7591349
year2018         -45.9941351  36.5396414
D_SEX1             2.8680730  28.2958249
D_AGE             -0.7317746   0.3155576
D_SmokingStatus2   4.2501817  71.1795875
D_SmokingStatus3   1.8722704  27.5978977
OCS_YN1          -45.1597543  -3.8910115
ICS_YN1            0.3165820  41.4437698
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,][-1,] 

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure5_tables/231218_RV_severe.csv"),quote = FALSE)

Figure 28 Effects over significant covariates in RV (Severe)

Code
eff_plot <- Effect(focal.predictors = "IL.13" , fit, xlevels=list(IL.13=seq(min(meta2$IL.13) - 1,max(meta2$IL.13) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.13, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.13, y = L_BODY_RVperc), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.13, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-13 (Severe)\n(Coeff: -5.1; P-value: 0.01)",
       x = expression('log'[2] * '(Expression)'),
       y = "RV [% pred.]") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "IL.33" , fit, xlevels=list(IL.33=seq(min(meta2$IL.33) - 1,max(meta2$IL.33) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.33, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.33, y = L_BODY_RVperc), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.33, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-33 (Severe)\n(Coeff: 4.37; P-value: 0.004)",
       x = expression('log'[2] * '(Expression)'),
       y = "RV [% pred.]") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "SCGB1A.1" , fit, xlevels=list(SCGB1A.1=seq(min(meta2$SCGB1A.1) - 1,max(meta2$SCGB1A.1) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = SCGB1A.1, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = SCGB1A.1, y = L_BODY_RVperc), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = SCGB1A.1, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "SCGB1A1 (Severe)\n(Coeff: -12.63; P-value: 1.57e-4)",
       x = expression('log'[2] * '(Expression)'),
       y = "RV [% pred.]") +
  theme_bw()
(a) Effects for IL-13
(b) Effects for IL-33
(c) Effects for SCGB1A-1
Figure 28: Effects over significant covariates in RV (Severe)
Code
eff_plot <- Effect(focal.predictors = "IL.13" , fit, xlevels=list(IL.13=seq(min(meta2$IL.13) - 1,max(meta2$IL.13) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.13, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.13, y = L_BODY_RVperc), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.13, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-13 (Severe)\n(Coeff: -5.1; P-value: 0.01)",
       x = expression('log'[2] * '(Expression)'),
       y = "RV [% pred.]") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure5/231218_RV_IL13_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "IL.33" , fit, xlevels=list(IL.33=seq(min(meta2$IL.33) - 1,max(meta2$IL.33) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.33, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.33, y = L_BODY_RVperc), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.33, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-33 (Severe)\n(Coeff: 4.37; P-value: 0.004)",
       x = expression('log'[2] * '(Expression)'),
       y = "RV [% pred.]") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure5/231218_RV_IL33_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "SCGB1A.1" , fit, xlevels=list(SCGB1A.1=seq(min(meta2$SCGB1A.1) - 1,max(meta2$SCGB1A.1) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = SCGB1A.1, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = SCGB1A.1, y = L_BODY_RVperc), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = SCGB1A.1, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "SCGB1A1 (Severe)\n(Coeff: -12.63; P-value: 1.57e-4)",
       x = expression('log'[2] * '(Expression)'),
       y = "RV [% pred.]") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure5/231218_RV_SCGB1A1_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
fit2 <- lm(L_BODY_RVperc ~ D_ASTHMA_SEVERITYGRADE_SCREEN 
           + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
           data = RV)
summary(fit2)

Call:
lm(formula = L_BODY_RVperc ~ D_ASTHMA_SEVERITYGRADE_SCREEN + 
    year + D_SEX + D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, 
    data = RV)

Residuals:
    Min      1Q  Median      3Q     Max 
-69.664 -18.632  -3.813  14.296 127.301 

Coefficients:
                                Estimate Std. Error t value Pr(>|t|)    
(Intercept)                    111.39061    7.53190  14.789  < 2e-16 ***
D_ASTHMA_SEVERITYGRADE_SCREEN1   3.24050    5.62294   0.576  0.56490    
D_ASTHMA_SEVERITYGRADE_SCREEN2   3.21355    5.32715   0.603  0.54686    
D_ASTHMA_SEVERITYGRADE_SCREEN3  24.85277    5.68225   4.374 1.75e-05 ***
year2018                        -0.08199    3.82354  -0.021  0.98291    
D_SEX1                           5.42814    3.55517   1.527  0.12798    
D_AGE                           -0.06834    0.12640  -0.541  0.58920    
D_SmokingStatus2                23.80595    7.16627   3.322  0.00102 ** 
D_SmokingStatus3                 3.14125    3.86294   0.813  0.41684    
OCS_YN1                          2.79295    7.03532   0.397  0.69169    
ICS_YN1                         -0.43910    5.19910  -0.084  0.93276    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 28.96 on 268 degrees of freedom
Multiple R-squared:  0.172, Adjusted R-squared:  0.1411 
F-statistic: 5.566 on 10 and 268 DF,  p-value: 1.53e-07
Code
confint(fit2,level = 0.95)
                                     2.5 %      97.5 %
(Intercept)                     96.5613925 126.2198252
D_ASTHMA_SEVERITYGRADE_SCREEN1  -7.8302594  14.3112526
D_ASTHMA_SEVERITYGRADE_SCREEN2  -7.2748371  13.7019401
D_ASTHMA_SEVERITYGRADE_SCREEN3  13.6652486  36.0402931
year2018                        -7.6099872   7.4460069
D_SEX1                          -1.5714714  12.4277547
D_AGE                           -0.3171986   0.1805237
D_SmokingStatus2                 9.6966060  37.9152943
D_SmokingStatus3                -4.4643123  10.7468198
OCS_YN1                        -11.0585702  16.6444799
ICS_YN1                        -10.6753797   9.7971763
Code
##write.csv(summary(fit2)$coefficients, file=paste0(prefix.tables,"231204_figure1_tables/231204_functional_Boxplot_asthma_severity_RV.csv"))

Figure 29 RV value distribution per asthma severity

Code
#pdf(file=paste0(prefix.plots,"_Boxplot_asthma_severity_RV.pdf"), width=10 , height=10)
ggplot(data = RV , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_BODY_RVperc)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), axis.text.y = element_text(size=10), axis.title=element_text(size=10,face="bold"), legend.position = "none", legend.text = element_text(size=10))+ ylim(c(min(meta2$L_BODY_RVperc,na.rm = T),max(meta2$L_BODY_RVperc,na.rm = T) + 10)) +
  xlab("")+
  ylab("RV [% pred.]")+
  scale_x_discrete(labels=c("healthy", "mild", "moderate", "severe"))+ 
  scale_fill_manual(name= "Severity grade",labels =c("healthy", "mild", "moderate", "severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd"  )) +
  geom_signif(y_position=max(meta2$L_BODY_RVperc,na.rm = T) + 10, xmin=c(1), xmax=c(1),annotation=c("1.36e-36"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_BODY_RVperc,na.rm = T) + 10, xmin=c(2), xmax=c(2),annotation=c("0.56"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_BODY_RVperc,na.rm = T) + 10, xmin=c(3), xmax=c(3),annotation=c("0.55"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_BODY_RVperc,na.rm = T) + 10, xmin=c(4), xmax=c(4),annotation=c("1.75e-5"), tip_length=0,textsize = 2,linetype = "blank")
Figure 29: RV value distribution per asthma severity
Code
to.replace <- c()
for(i in summary(fit2)$coefficients[,4][1:4]){
  if(i < 0.001){
    to.replace <- c(to.replace,"***")
  }else if(i < 0.01){
    to.replace <- c(to.replace,"**")
  }else if(i < 0.05){
    to.replace <- c(to.replace,"*")
  }else if(i < 0.1){
    to.replace <- c(to.replace,"+")
  }else{
    to.replace <- c(to.replace,"n.s.")
  }
}

p <- ggplot(data = RV , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_BODY_RVperc)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), 
                                                                                           axis.text.y = element_text(size=10), 
                                                                                           axis.title.y = element_text(size=10,face="bold"),
                                                                                           axis.title.x =element_blank(), legend.position = "none", 
                                                                                           legend.text = element_text(size=10)) + 
  ylim(c(min(meta2$L_BODY_RVperc,na.rm = T),max(meta2$L_BODY_RVperc,na.rm = T) + 10)) +
  ylab("RV [% pred.]") +
  scale_x_discrete(labels=c("Healthy", "Mild", "Moderate", "Severe"))+
  scale_fill_manual(name= "Severity grade",labels =c("Healthy", "Mild", "Moderate", "Severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd" )) +
  geom_signif(y_position=max(meta2$L_BODY_RVperc,na.rm = T) + 5, xmin=c(1), xmax=c(1),annotation=c(to.replace[1]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_BODY_RVperc,na.rm = T) + 5, xmin=c(2), xmax=c(2),annotation=c(to.replace[2]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_BODY_RVperc,na.rm = T) + 5, xmin=c(3), xmax=c(3),annotation=c(to.replace[3]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_BODY_RVperc,na.rm = T) + 5, xmin=c(4), xmax=c(4),annotation=c(to.replace[4]), tip_length=0,textsize = 3.5,linetype = "blank") 

#ggsave(filename = paste0(prefix.plots,"231204_figure1/231204_functional_Boxplot_asthma_severity_RV.pdf"),plot = p,units = "cm",width = 8,height = 8)

3.8 TLC

Code
TLC<-meta2[!is.na(meta2$L_BODY_TLCperc), ]
summary(TLC$L_BODY_TLCperc) # includes values > 100 --> use linear regression
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  68.15   98.65  108.04  107.49  115.71  149.13 
Code
# linear model
fit <- lm(L_BODY_TLCperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = TLC)
summary(fit)

Call:
lm(formula = L_BODY_TLCperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = TLC)

Residuals:
    Min      1Q  Median      3Q     Max 
-33.951  -8.297   0.210   8.587  41.704 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)    
(Intercept)      94.3938178 11.3742865   8.299 6.16e-15 ***
Eotaxin.3        -0.1462468  0.5755767  -0.254 0.799633    
G.CSF             0.0050788  0.3344150   0.015 0.987895    
IFN.g            -0.4216884  0.6359111  -0.663 0.507850    
IL.10             0.7991666  0.6181324   1.293 0.197225    
IL.13             0.0731007  0.4847340   0.151 0.880248    
IL.17             0.2591770  0.7823019   0.331 0.740690    
IL.1alpha        -1.0150045  0.7883421  -1.288 0.199081    
IL.1F7           -0.8760786  0.7545682  -1.161 0.246714    
IL.24             0.5236281  0.3020155   1.734 0.084166 .  
IL.33             0.4712826  0.3437551   1.371 0.171585    
IL.4             -0.3158565  0.7239786  -0.436 0.663004    
IL.5              0.2943200  0.4640852   0.634 0.526523    
IL.8              1.0560864  0.7023475   1.504 0.133908    
Periostin        -0.2841423  0.3301746  -0.861 0.390277    
SCGB1A.1          0.1304340  0.5982644   0.218 0.827587    
TNF.alpha        -0.9549920  0.8302623  -1.150 0.251127    
year2018          6.1281497  5.3455019   1.146 0.252699    
D_SEX1            6.0852029  1.6901193   3.600 0.000382 ***
D_AGE             0.0004634  0.0564316   0.008 0.993455    
D_SmokingStatus2  3.4058756  3.2721486   1.041 0.298923    
D_SmokingStatus3  3.2227193  1.7507139   1.841 0.066812 .  
OCS_YN1           1.7978306  2.7827252   0.646 0.518816    
ICS_YN1          -1.5815668  2.2337227  -0.708 0.479567    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 12.73 on 255 degrees of freedom
Multiple R-squared:  0.1404,    Adjusted R-squared:  0.06282 
F-statistic:  1.81 on 23 and 255 DF,  p-value: 0.0149
Code
confint(fit,level = 0.95)
                       2.5 %      97.5 %
(Intercept)      71.99431520 116.7933205
Eotaxin.3        -1.27973614   0.9872426
G.CSF            -0.65348816   0.6636458
IFN.g            -1.67399495   0.8306181
IL.10            -0.41812799   2.0164613
IL.13            -0.88149100   1.0276924
IL.17            -1.28141839   1.7997723
IL.1alpha        -2.56749489   0.5374859
IL.1F7           -2.36205774   0.6099005
IL.24            -0.07113434   1.1183905
IL.33            -0.20567793   1.1482432
IL.4             -1.74159527   1.1098823
IL.5             -0.61960784   1.2082479
IL.8             -0.32705396   2.4392267
Periostin        -0.93435869   0.3660741
SCGB1A.1         -1.04773444   1.3086025
TNF.alpha        -2.59003627   0.6800523
year2018         -4.39880372  16.6551031
D_SEX1            2.75683312   9.4135727
D_AGE            -0.11066807   0.1115948
D_SmokingStatus2 -3.03800114   9.8497524
D_SmokingStatus3 -0.22498011   6.6704187
OCS_YN1          -3.68221959   7.2778808
ICS_YN1          -5.98046062   2.8173269
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,][-1,]
WARNING: OCS could not be used because all mild cases are equal to 0. The model needs at least one sample with OCS equal. to 1 to contrast.
Code
fit <- lm(L_BODY_TLCperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + ICS_YN,
          data = subset(TLC,D_ASTHMA_SEVERITYGRADE_SCREEN==1))
summary(fit)

Call:
lm(formula = L_BODY_TLCperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + ICS_YN, data = subset(TLC, D_ASTHMA_SEVERITYGRADE_SCREEN == 
    1))

Residuals:
     Min       1Q   Median       3Q      Max 
-22.1388  -4.7476   0.5765   5.8278  21.4294 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)
(Intercept)       58.450438  38.957232   1.500    0.145
Eotaxin.3         -0.696052   1.582798  -0.440    0.663
G.CSF             -0.628508   0.969040  -0.649    0.522
IFN.g              0.701799   1.662116   0.422    0.676
IL.10              2.773138   2.654865   1.045    0.305
IL.13             -0.512015   1.236008  -0.414    0.682
IL.17             -2.828888   2.523068  -1.121    0.272
IL.1alpha         -0.090471   2.553250  -0.035    0.972
IL.1F7            -1.478274   3.134024  -0.472    0.641
IL.24              0.190206   1.041489   0.183    0.856
IL.33             -0.412480   0.943435  -0.437    0.665
IL.4               0.216048   2.149140   0.101    0.921
IL.5              -0.957821   1.742101  -0.550    0.587
IL.8               2.392798   2.315967   1.033    0.310
Periostin         -0.866829   1.215295  -0.713    0.482
SCGB1A.1           1.509165   2.358035   0.640    0.527
TNF.alpha         -1.014605   2.617789  -0.388    0.701
year2018          10.297400  21.957368   0.469    0.643
D_SEX1             6.635274   4.543878   1.460    0.155
D_AGE              0.001746   0.170049   0.010    0.992
D_SmokingStatus2 -11.529573  11.091795  -1.039    0.307
D_SmokingStatus3   1.116749   5.386510   0.207    0.837
ICS_YN1            1.589905   5.309812   0.299    0.767

Residual standard error: 12.54 on 28 degrees of freedom
Multiple R-squared:  0.3489,    Adjusted R-squared:  -0.1626 
F-statistic: 0.6821 on 22 and 28 DF,  p-value: 0.8196
Code
confint(fit,level = 0.95)
                       2.5 %      97.5 %
(Intercept)      -21.3498355 138.2507105
Eotaxin.3         -3.9382673   2.5461639
G.CSF             -2.6134959   1.3564791
IFN.g             -2.7028907   4.1064888
IL.10             -2.6651061   8.2113826
IL.13             -3.0438622   2.0198326
IL.17             -7.9971580   2.3393827
IL.1alpha         -5.3205662   5.1396249
IL.1F7            -7.8980302   4.9414826
IL.24             -1.9431874   2.3235993
IL.33             -2.3450183   1.5200586
IL.4              -4.1862663   4.6183630
IL.5              -4.5263529   2.6107108
IL.8              -2.3512445   7.1368402
Periostin         -3.3562479   1.6225898
SCGB1A.1          -3.3210499   6.3393805
TNF.alpha         -6.3769040   4.3476932
year2018         -34.6802291  55.2750295
D_SEX1            -2.6724381  15.9429868
D_AGE             -0.3465845   0.3500767
D_SmokingStatus2 -34.2500852  11.1909384
D_SmokingStatus3  -9.9170163  12.1505152
ICS_YN1           -9.2867527  12.4665624
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,] #sex

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure5_tables/231218_TLC_mild.csv"),quote = FALSE)
Code
fit <- lm(L_BODY_TLCperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = subset(TLC,D_ASTHMA_SEVERITYGRADE_SCREEN==2))
summary(fit)

Call:
lm(formula = L_BODY_TLCperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = subset(TLC, 
    D_ASTHMA_SEVERITYGRADE_SCREEN == 2))

Residuals:
    Min      1Q  Median      3Q     Max 
-19.998  -6.191  -0.837   4.945  31.793 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)      101.12802   25.35791   3.988 0.000248 ***
Eotaxin.3         -1.20678    1.47253  -0.820 0.416901    
G.CSF             -0.04271    0.64766  -0.066 0.947715    
IFN.g             -2.47656    1.44393  -1.715 0.093353 .  
IL.10              1.20945    1.21796   0.993 0.326133    
IL.13              2.68804    1.35703   1.981 0.053884 .  
IL.17              1.31931    2.02617   0.651 0.518345    
IL.1alpha         -1.99262    1.97060  -1.011 0.317463    
IL.1F7            -0.78978    2.10132  -0.376 0.708835    
IL.24              0.50254    0.61972   0.811 0.421772    
IL.33              0.85344    0.78473   1.088 0.282712    
IL.4               0.14062    1.57343   0.089 0.929191    
IL.5               0.31217    0.93886   0.332 0.741094    
IL.8               1.57235    1.27136   1.237 0.222743    
Periostin         -0.54139    0.81363  -0.665 0.509262    
SCGB1A.1           0.89389    0.92191   0.970 0.337541    
TNF.alpha         -1.85086    1.36692  -1.354 0.182637    
year2018           4.61410   12.77600   0.361 0.719713    
D_SEX1            -1.06352    3.75181  -0.283 0.778148    
D_AGE             -0.12660    0.11899  -1.064 0.293162    
D_SmokingStatus2  11.53228    7.65943   1.506 0.139307    
D_SmokingStatus3   3.26895    3.88539   0.841 0.404704    
OCS_YN1           16.73351   14.80054   1.131 0.264348    
ICS_YN1           -8.02754    3.70394  -2.167 0.035666 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 12.23 on 44 degrees of freedom
Multiple R-squared:  0.3696,    Adjusted R-squared:  0.04004 
F-statistic: 1.121 on 23 and 44 DF,  p-value: 0.3622
Code
confint(fit,level = 0.95)
                        2.5 %      97.5 %
(Intercept)       50.02250734 152.2335291
Eotaxin.3         -4.17447303   1.7609043
G.CSF             -1.34799198   1.2625624
IFN.g             -5.38660199   0.4334884
IL.10             -1.24518884   3.6640956
IL.13             -0.04687881   5.4229550
IL.17             -2.76416580   5.4027932
IL.1alpha         -5.96411032   1.9788747
IL.1F7            -5.02472283   3.4451577
IL.24             -0.74640991   1.7514998
IL.33             -0.72807804   2.4349515
IL.4              -3.03042485   3.3116691
IL.5              -1.57997854   2.2043119
IL.8              -0.98991501   4.1346186
Periostin         -2.18115047   1.0983610
SCGB1A.1          -0.96409274   2.7518784
TNF.alpha         -4.60570532   0.9039766
year2018         -21.13422473  30.3624327
D_SEX1            -8.62479364   6.4977610
D_AGE             -0.36640098   0.1132091
D_SmokingStatus2  -3.90428109  26.9688485
D_SmokingStatus3  -4.56153549  11.0994405
OCS_YN1          -13.09502282  46.5620445
ICS_YN1          -15.49235165  -0.5627324
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure5_tables/231218_TLC_moderate.csv"),quote = FALSE)
Code
fit <- lm(L_BODY_TLCperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = subset(TLC,D_ASTHMA_SEVERITYGRADE_SCREEN==3))
summary(fit)

Call:
lm(formula = L_BODY_TLCperc ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = subset(TLC, 
    D_ASTHMA_SEVERITYGRADE_SCREEN == 3))

Residuals:
     Min       1Q   Median       3Q      Max 
-24.7327  -8.1767   0.9177   7.9414  23.1071 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)      122.21968   23.18584   5.271 1.29e-06 ***
Eotaxin.3          1.13158    1.08416   1.044 0.300004    
G.CSF              0.86594    0.62215   1.392 0.168133    
IFN.g             -1.23778    1.16338  -1.064 0.290810    
IL.10              0.93525    1.24759   0.750 0.455846    
IL.13             -1.00189    0.93956  -1.066 0.289737    
IL.17              1.15895    1.36286   0.850 0.397857    
IL.1alpha         -1.32705    1.58632  -0.837 0.405533    
IL.1F7             0.32867    1.48189   0.222 0.825086    
IL.24              0.81958    0.54034   1.517 0.133586    
IL.33              1.51661    0.68191   2.224 0.029194 *  
IL.4               0.43991    1.37228   0.321 0.749442    
IL.5               0.38221    0.94576   0.404 0.687283    
IL.8               1.10267    1.76672   0.624 0.534459    
Periostin         -0.36492    0.57107  -0.639 0.524786    
SCGB1A.1          -3.88297    1.49278  -2.601 0.011214 *  
TNF.alpha         -3.23924    1.97673  -1.639 0.105523    
year2018           0.56469    9.75517   0.058 0.953995    
D_SEX1            11.24741    3.00546   3.742 0.000358 ***
D_AGE             -0.02353    0.12379  -0.190 0.849754    
D_SmokingStatus2   3.40258    7.91080   0.430 0.668359    
D_SmokingStatus3   7.38655    3.04067   2.429 0.017557 *  
OCS_YN1           -9.75370    4.87780  -2.000 0.049214 *  
ICS_YN1           11.21681    4.86107   2.307 0.023827 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 13.07 on 74 degrees of freedom
Multiple R-squared:  0.4201,    Adjusted R-squared:  0.2398 
F-statistic: 2.331 on 23 and 74 DF,  p-value: 0.003315
Code
confint(fit,level = 0.95)
                       2.5 %       97.5 %
(Intercept)       76.0208801 168.41848601
Eotaxin.3         -1.0286513   3.29180413
G.CSF             -0.3737108   2.10560045
IFN.g             -3.5558533   1.08030242
IL.10             -1.5506273   3.42112282
IL.13             -2.8740140   0.87022676
IL.17             -1.5566108   3.87451074
IL.1alpha         -4.4878667   1.83375786
IL.1F7            -2.6240662   3.28141406
IL.24             -0.2570835   1.89623724
IL.33              0.1578855   2.87534041
IL.4              -2.2944208   3.17423689
IL.5              -1.5022646   2.26668789
IL.8              -2.4176037   4.62294716
Periostin         -1.5028080   0.77296077
SCGB1A.1          -6.8573871  -0.90854837
TNF.alpha         -7.1779553   0.69946860
year2018         -18.8729144  20.00229222
D_SEX1             5.2588967  17.23592176
D_AGE             -0.2701904   0.22312593
D_SmokingStatus2 -12.3600239  19.16518416
D_SmokingStatus3   1.3278823  13.44521311
OCS_YN1          -19.4729396  -0.03446276
ICS_YN1            1.5309054  20.90270670
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,][-1,]

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure5_tables/231218_TLC_severe.csv"),quote = FALSE)

Figure 30 Effects over significant covariates in TLC (Severe)

Code
eff_plot <- Effect(focal.predictors = "IL.33" , fit, xlevels=list(IL.33=seq(min(meta2$IL.33) - 1,max(meta2$IL.33) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.33, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.33, y = L_BODY_TLCperc), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.33, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-33 (Severe)\n(Coeff: 1.52; P-value: 0.03)",
       x = expression('log'[2] * '(Expression)'),
       y = "TLC [%pred.]") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "SCGB1A.1" , fit, xlevels=list(SCGB1A.1=seq(min(meta2$SCGB1A.1) - 1,max(meta2$SCGB1A.1) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = SCGB1A.1, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = SCGB1A.1, y = L_BODY_TLCperc), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = SCGB1A.1, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "SCGB1A1 (Severe)\n(Coeff: -3.88; P-value: 0.01)",
       x = expression('log'[2] * '(Expression)'),
       y = "TLC [%pred.]") +
  theme_bw()
(a) Effects for IL-33
(b) Effects for SCGB1A-1
Figure 30: Effects over significant covariates in TLC (Severe)
Code
eff_plot <- Effect(focal.predictors = "IL.33" , fit, xlevels=list(IL.33=seq(min(meta2$IL.33) - 1,max(meta2$IL.33) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.33, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.33, y = L_BODY_TLCperc), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.33, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-33 (Severe)\n(Coeff: 1.52; P-value: 0.03)",
       x = expression('log'[2] * '(Expression)'),
       y = "TLC [%pred.]") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure5/231218_TLC_IL13_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "SCGB1A.1" , fit, xlevels=list(SCGB1A.1=seq(min(meta2$SCGB1A.1) - 1,max(meta2$SCGB1A.1) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = SCGB1A.1, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = SCGB1A.1, y = L_BODY_TLCperc), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = SCGB1A.1, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "SCGB1A1 (Severe)\n(Coeff: -3.88; P-value: 0.01)",
       x = expression('log'[2] * '(Expression)'),
       y = "TLC [%pred.]") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure5/231218_TLC_SCGB1A1_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
fit2 <- lm(L_BODY_TLCperc ~ D_ASTHMA_SEVERITYGRADE_SCREEN 
           + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
           data = TLC)
summary(fit2)

Call:
lm(formula = L_BODY_TLCperc ~ D_ASTHMA_SEVERITYGRADE_SCREEN + 
    year + D_SEX + D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, 
    data = TLC)

Residuals:
    Min      1Q  Median      3Q     Max 
-35.139  -8.280  -0.013   8.990  46.659 

Coefficients:
                                Estimate Std. Error t value Pr(>|t|)    
(Intercept)                    103.54909    3.30813  31.301  < 2e-16 ***
D_ASTHMA_SEVERITYGRADE_SCREEN1  -0.46141    2.46969  -0.187   0.8519    
D_ASTHMA_SEVERITYGRADE_SCREEN2  -4.32877    2.33977  -1.850   0.0654 .  
D_ASTHMA_SEVERITYGRADE_SCREEN3  -1.11184    2.49574  -0.445   0.6563    
year2018                        -1.29482    1.67936  -0.771   0.4414    
D_SEX1                           6.60137    1.56149   4.228 3.24e-05 ***
D_AGE                            0.02024    0.05552   0.365   0.7157    
D_SmokingStatus2                 3.49498    3.14754   1.110   0.2678    
D_SmokingStatus3                 3.65873    1.69667   2.156   0.0319 *  
OCS_YN1                          0.65856    3.09003   0.213   0.8314    
ICS_YN1                         -0.67553    2.28353  -0.296   0.7676    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 12.72 on 268 degrees of freedom
Multiple R-squared:  0.09808,   Adjusted R-squared:  0.06442 
F-statistic: 2.914 on 10 and 268 DF,  p-value: 0.001757
Code
confint(fit2,level = 0.95)
                                     2.5 %      97.5 %
(Intercept)                    97.03585038 110.0623268
D_ASTHMA_SEVERITYGRADE_SCREEN1 -5.32387469   4.4010453
D_ASTHMA_SEVERITYGRADE_SCREEN2 -8.93544899   0.2779001
D_ASTHMA_SEVERITYGRADE_SCREEN3 -6.02559044   3.8019009
year2018                       -4.60124563   2.0115971
D_SEX1                          3.52702316   9.6757159
D_AGE                          -0.08906316   0.1295447
D_SmokingStatus2               -2.70208145   9.6920353
D_SmokingStatus3                0.31823784   6.9992198
OCS_YN1                        -5.42526293   6.7423770
ICS_YN1                        -5.17147233   3.8204144
Code
##write.csv(summary(fit2)$coefficients, file=paste0(prefix.tables,"231204_figure1_tables/231204_functional_Boxplot_asthma_severity_TLC.csv"))

Figure 31 TLC value distribution per asthma severity

Code
#pdf(file=paste0(prefix.plots,"_Boxplot_asthma_severity_TLC.pdf"), width=10 , height=10)
ggplot(data = TLC , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_BODY_TLCperc)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4) + theme_bw() + theme(axis.text.x = element_text(size=10), axis.text.y = element_text(size=10), axis.title=element_text(size=10,face="bold"), legend.position = "none", legend.text = element_text(size=10))+
  xlab("")+
  ylab("TLC [% pred.]")+
  scale_x_discrete(labels=c("healthy", "mild", "moderate", "severe"))+ 
  ylim(c(min(meta2$L_BODY_TLCperc,na.rm = T),max(meta2$L_BODY_TLCperc,na.rm = T) + 10)) +
  scale_fill_manual(name= "Severity grade",labels =c("healthy", "mild", "moderate", "severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd"  )) +
  geom_signif(y_position=max(meta2$L_BODY_TLCperc,na.rm = T) + 10, xmin=c(1), xmax=c(1),annotation=c("1.69e-91"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_BODY_TLCperc,na.rm = T) + 10, xmin=c(2), xmax=c(2),annotation=c("0.85"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_BODY_TLCperc,na.rm = T) + 10, xmin=c(3), xmax=c(3),annotation=c("0.07"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_BODY_TLCperc,na.rm = T) + 10, xmin=c(4), xmax=c(4),annotation=c("0.66"), tip_length=0,textsize = 2,linetype = "blank")
Figure 31: TLC value distribution per asthma severity
Code
to.replace <- c()
for(i in summary(fit2)$coefficients[,4][1:4]){
  if(i < 0.001){
    to.replace <- c(to.replace,"***")
  }else if(i < 0.01){
    to.replace <- c(to.replace,"**")
  }else if(i < 0.05){
    to.replace <- c(to.replace,"*")
  }else if(i < 0.1){
    to.replace <- c(to.replace,"+")
  }else{
    to.replace <- c(to.replace,"n.s.")
  }
}

p <- ggplot(data = TLC , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_BODY_TLCperc)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), 
                                                                                           axis.text.y = element_text(size=10), 
                                                                                           axis.title.y = element_text(size=10,face="bold"),
                                                                                           axis.title.x =element_blank(), legend.position = "none", 
                                                                                           legend.text = element_text(size=10)) + 
  ylim(c(min(meta2$L_BODY_TLCperc,na.rm = T),max(meta2$L_BODY_TLCperc,na.rm = T) + 10)) +
  ylab("TLC [% pred.]") +
  scale_x_discrete(labels=c("Healthy", "Mild", "Moderate", "Severe"))+
  scale_fill_manual(name= "Severity grade",labels =c("Healthy", "Mild", "Moderate", "Severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd" )) +
  geom_signif(y_position=max(meta2$L_BODY_TLCperc,na.rm = T) + 5, xmin=c(1), xmax=c(1),annotation=c(to.replace[1]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_BODY_TLCperc,na.rm = T) + 5, xmin=c(2), xmax=c(2),annotation=c(to.replace[2]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_BODY_TLCperc,na.rm = T) + 5, xmin=c(3), xmax=c(3),annotation=c(to.replace[3]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_BODY_TLCperc,na.rm = T) + 5, xmin=c(4), xmax=c(4),annotation=c(to.replace[4]), tip_length=0,textsize = 3.5,linetype = "blank") 

#ggsave(filename = paste0(prefix.plots,"231204_figure1/231204_functional_Boxplot_asthma_severity_TLC.pdf"),plot = p,units = "cm",width = 8,height = 8)

3.9 ACQ5

Code
ACQ_5<-meta2[!is.na(meta2$S_ACQ_5_TOTAL), ] # healthy persons do not have the ACQ_5 score
summary(ACQ_5$S_ACQ_5_TOTAL) 
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 0.0000  0.4286  1.1429  1.4077  2.1071  4.8000 
Code
# linear model
fit <- lm(S_ACQ_5_TOTAL ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = ACQ_5)
summary(fit)

Call:
lm(formula = S_ACQ_5_TOTAL ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = ACQ_5)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.7128 -0.6671 -0.0674  0.5686  3.5986 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)    
(Intercept)      -0.3599329  1.0840077  -0.332 0.740226    
Eotaxin.3         0.0023833  0.0531419   0.045 0.964276    
G.CSF             0.0281844  0.0299874   0.940 0.348476    
IFN.g             0.1432429  0.0568618   2.519 0.012589 *  
IL.10            -0.0007233  0.0578113  -0.013 0.990031    
IL.13            -0.0227662  0.0433089  -0.526 0.599730    
IL.17            -0.1534645  0.0719399  -2.133 0.034189 *  
IL.1alpha        -0.0127901  0.0735898  -0.174 0.862206    
IL.1F7           -0.0329321  0.0769779  -0.428 0.669272    
IL.24             0.0252583  0.0273494   0.924 0.356897    
IL.33            -0.0237771  0.0317815  -0.748 0.455298    
IL.4              0.0861089  0.0669873   1.285 0.200199    
IL.5             -0.0233799  0.0429248  -0.545 0.586617    
IL.8              0.0213533  0.0667894   0.320 0.749539    
Periostin         0.0210058  0.0312501   0.672 0.502283    
SCGB1A.1          0.0748146  0.0518256   1.444 0.150503    
TNF.alpha        -0.0695264  0.0746943  -0.931 0.353131    
year2018          0.2034818  0.5242543   0.388 0.698350    
D_SEX1            0.4357735  0.1591373   2.738 0.006762 ** 
D_AGE             0.0091182  0.0055686   1.637 0.103198    
D_SmokingStatus2  0.4056622  0.3251043   1.248 0.213643    
D_SmokingStatus3 -0.1540603  0.1608935  -0.958 0.339517    
OCS_YN1           0.8732886  0.2303556   3.791 0.000201 ***
ICS_YN1           0.0599729  0.1904681   0.315 0.753205    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.03 on 190 degrees of freedom
Multiple R-squared:  0.2873,    Adjusted R-squared:  0.2011 
F-statistic: 3.331 on 23 and 190 DF,  p-value: 2.661e-06
Code
confint(fit,level = 0.95)
                        2.5 %      97.5 %
(Intercept)      -2.498168616  1.77830291
Eotaxin.3        -0.102440583  0.10720713
G.CSF            -0.030966655  0.08733544
IFN.g             0.031081356  0.25540453
IL.10            -0.114757710  0.11331119
IL.13            -0.108194211  0.06266179
IL.17            -0.295368096 -0.01156096
IL.1alpha        -0.157948104  0.13236789
IL.1F7           -0.184773168  0.11890891
IL.24            -0.028689161  0.07920577
IL.33            -0.086466964  0.03891268
IL.4             -0.046025381  0.21824314
IL.5             -0.108050280  0.06129039
IL.8             -0.110390762  0.15309737
Periostin        -0.040635824  0.08264741
SCGB1A.1         -0.027412833  0.17704200
TNF.alpha        -0.216862997  0.07781014
year2018         -0.830624497  1.23758808
D_SEX1            0.121870574  0.74967634
D_AGE            -0.001866106  0.02010243
D_SmokingStatus2 -0.235615239  1.04693966
D_SmokingStatus3 -0.471427328  0.16330666
OCS_YN1           0.418905677  1.32767151
ICS_YN1          -0.315730697  0.43567658
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]

Figure 32 Effects over significant covariates in ACQ5

Code
plot(Effect(focal.predictors = rownames(sig)[1] , fit), rug = FALSE,  main="IFN-g\n(Coeff: 0.14; P-value: 0.01)", ylab= "ACQ-5 score",  xlab= "log2(Expression)",rescale.axis=F, ylim=c(0,4))#
plot(Effect(focal.predictors = rownames(sig)[2] , fit), rug = FALSE,  main="IL-17\n(Coeff: -0.15; P-value: 0.03)", ylab= "ACQ-5 score",  xlab= "log2(Expression)",rescale.axis=F, ylim=c(0,4))#
(a) Effects for IFN-g
(b) Effects for IL-17
Figure 32: Effects over significant covariates in ACQ5
WARNING: OCS could not be used because all mild cases are equal to 0. The model needs at least one sample with OCS equal. to 1 to contrast.
Code
fit <- lm(S_ACQ_5_TOTAL ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + ICS_YN,
          data = subset(ACQ_5, D_ASTHMA_SEVERITYGRADE_SCREEN==1))
summary(fit)

Call:
lm(formula = S_ACQ_5_TOTAL ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + ICS_YN, data = subset(ACQ_5, D_ASTHMA_SEVERITYGRADE_SCREEN == 
    1))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.24203 -0.33253 -0.06003  0.32828  2.78996 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)  
(Intercept)       5.5129762  2.9693819   1.857   0.0743 .
Eotaxin.3         0.1588956  0.1206621   1.317   0.1990  
G.CSF             0.1659824  0.0738787   2.247   0.0330 *
IFN.g             0.1322446  0.1334462   0.991   0.3305  
IL.10             0.1749637  0.2023507   0.865   0.3948  
IL.13             0.0987028  0.0945803   1.044   0.3059  
IL.17            -0.3727601  0.1940990  -1.920   0.0654 .
IL.1alpha        -0.1905509  0.1948452  -0.978   0.3368  
IL.1F7           -0.1576892  0.2437268  -0.647   0.5231  
IL.24             0.1588952  0.0809634   1.963   0.0601 .
IL.33            -0.0319583  0.0720745  -0.443   0.6610  
IL.4              0.1895195  0.1643539   1.153   0.2590  
IL.5             -0.0702327  0.1361373  -0.516   0.6101  
IL.8             -0.4457391  0.1799214  -2.477   0.0198 *
Periostin        -0.0744644  0.0927681  -0.803   0.4292  
SCGB1A.1          0.1642858  0.1859442   0.884   0.3848  
TNF.alpha         0.1085435  0.2051904   0.529   0.6011  
year2018         -0.1320524  1.6911047  -0.078   0.9383  
D_SEX1           -0.5483156  0.3514051  -1.560   0.1303  
D_AGE            -0.0006159  0.0130709  -0.047   0.9628  
D_SmokingStatus2 -0.6102410  0.8503336  -0.718   0.4791  
D_SmokingStatus3  0.1414483  0.4376873   0.323   0.7491  
ICS_YN1          -0.0742532  0.4140868  -0.179   0.8590  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.9554 on 27 degrees of freedom
Multiple R-squared:  0.4645,    Adjusted R-squared:  0.02822 
F-statistic: 1.065 on 22 and 27 DF,  p-value: 0.4338
Code
confint(fit,level = 0.95)
                        2.5 %      97.5 %
(Intercept)      -0.579692295 11.60564462
Eotaxin.3        -0.088682529  0.40647381
G.CSF             0.014395819  0.31756905
IFN.g            -0.141564358  0.40605351
IL.10            -0.240225501  0.59015298
IL.13            -0.095360018  0.29276554
IL.17            -0.771018321  0.02549815
IL.1alpha        -0.590340319  0.20923842
IL.1F7           -0.657775284  0.34239689
IL.24            -0.007227958  0.32501832
IL.33            -0.179843035  0.11592639
IL.4             -0.147706790  0.52674573
IL.5             -0.349563276  0.20909793
IL.8             -0.814907376 -0.07657076
Periostin        -0.264808800  0.11588004
SCGB1A.1         -0.217240172  0.54581184
TNF.alpha        -0.312472367  0.52955940
year2018         -3.601912692  3.33780790
D_SEX1           -1.269339417  0.17270820
D_AGE            -0.027435184  0.02620335
D_SmokingStatus2 -2.354981343  1.13449938
D_SmokingStatus3 -0.756611953  1.03950852
ICS_YN1          -0.923889269  0.77538279
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure5_tables/231218_ACQ5_mild.csv"),quote = FALSE)

Figure 33 Effects over significant covariates in ACQ5 (Mild)

Code
eff_plot <- Effect(focal.predictors = "G.CSF" , fit, xlevels=list(G.CSF=seq(min(meta2$G.CSF) - 1,max(meta2$G.CSF) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = G.CSF, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = G.CSF, y = S_ACQ_5_TOTAL), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = G.CSF, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "G-CSF (Mild)\n(Coeff: 0.17; P-value: 0.03)",
       x = expression('log'[2] * '(Expression)'),
       y = "ACQ-5 score") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "IL.8" , fit, xlevels=list(IL.8=seq(min(meta2$IL.8) - 1,max(meta2$IL.8) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.8, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.8, y = S_ACQ_5_TOTAL), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.8, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-8 (Mild)\n(Coeff: -0.45; P-value: 0.02)",
       x = expression('log'[2] * '(Expression)'),
       y = "ACQ-5 score") +
  theme_bw()
(a) Effects for G-CSF
(b) Effects for IL-8
Figure 33: Effects over significant covariates in ACQ5 (Mild)
Code
eff_plot <- Effect(focal.predictors = "G.CSF" , fit, xlevels=list(G.CSF=seq(min(meta2$G.CSF) - 1,max(meta2$G.CSF) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = G.CSF, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = G.CSF, y = S_ACQ_5_TOTAL), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = G.CSF, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "G-CSF (Mild)\n(Beta=0.17; p=0.03)",
       x = "Normalized abundances",
       y = "ACQ-5 score") +
  theme_bw()

ggsave(filename = paste0(prefix.plots,"Fig3/acq5_GCSF_mild.pdf"),plot = p, width = 7,height = 7,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "IL.8" , fit, xlevels=list(IL.8=seq(min(meta2$IL.8) - 1,max(meta2$IL.8) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.8, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.8, y = S_ACQ_5_TOTAL), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.8, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-8 (Mild)\n(Coeff: -0.45; P-value: 0.02)",
       x = expression('log'[2] * '(Expression)'),
       y = "ACQ-5 score") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231218_figure5/231218_ACQ5_IL-8_mild.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
fit <- lm(S_ACQ_5_TOTAL ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = subset(ACQ_5, D_ASTHMA_SEVERITYGRADE_SCREEN==2))
summary(fit)

Call:
lm(formula = S_ACQ_5_TOTAL ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = subset(ACQ_5, 
    D_ASTHMA_SEVERITYGRADE_SCREEN == 2))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.31294 -0.53929 -0.05022  0.43787  1.68525 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)  
(Intercept)       1.334144   1.711438   0.780   0.4398  
Eotaxin.3        -0.083467   0.100347  -0.832   0.4100  
G.CSF             0.021177   0.044078   0.480   0.6333  
IFN.g             0.071385   0.099633   0.716   0.4775  
IL.10            -0.064710   0.083188  -0.778   0.4408  
IL.13            -0.026918   0.091614  -0.294   0.7703  
IL.17            -0.039441   0.139911  -0.282   0.7793  
IL.1alpha        -0.011934   0.134749  -0.089   0.9298  
IL.1F7           -0.013135   0.142255  -0.092   0.9269  
IL.24             0.047921   0.042096   1.138   0.2611  
IL.33             0.012152   0.054626   0.222   0.8250  
IL.4              0.131927   0.107698   1.225   0.2271  
IL.5              0.026133   0.062976   0.415   0.6802  
IL.8             -0.008555   0.086454  -0.099   0.9216  
Periostin         0.044837   0.057566   0.779   0.4402  
SCGB1A.1          0.077674   0.062700   1.239   0.2220  
TNF.alpha        -0.033881   0.093966  -0.361   0.7201  
year2018         -0.267917   0.877221  -0.305   0.7615  
D_SEX1            0.323344   0.254643   1.270   0.2108  
D_AGE            -0.004677   0.008003  -0.584   0.5620  
D_SmokingStatus2  0.959462   0.520625   1.843   0.0721 .
D_SmokingStatus3 -0.154781   0.263594  -0.587   0.5601  
OCS_YN1           2.221349   0.995811   2.231   0.0308 *
ICS_YN1          -0.304207   0.250800  -1.213   0.2316  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.8329 on 44 degrees of freedom
Multiple R-squared:  0.4216,    Adjusted R-squared:  0.1193 
F-statistic: 1.395 on 23 and 44 DF,  p-value: 0.1687
Code
confint(fit,level = 0.95)
                       2.5 %     97.5 %
(Intercept)      -2.11503247 4.78332078
Eotaxin.3        -0.28570289 0.11876924
G.CSF            -0.06765716 0.11001103
IFN.g            -0.12941155 0.27218244
IL.10            -0.23236340 0.10294437
IL.13            -0.21155358 0.15771737
IL.17            -0.32141396 0.24253126
IL.1alpha        -0.28350306 0.25963577
IL.1F7           -0.29982989 0.27356062
IL.24            -0.03691729 0.13275995
IL.33            -0.09793971 0.12224464
IL.4             -0.08512363 0.34897857
IL.5             -0.10078766 0.15305333
IL.8             -0.18279063 0.16568163
Periostin        -0.07117928 0.16085252
SCGB1A.1         -0.04868905 0.20403762
TNF.alpha        -0.22325803 0.15549516
year2018         -2.03584021 1.50000720
D_SEX1           -0.18985558 0.83654325
D_AGE            -0.02080604 0.01145239
D_SmokingStatus2 -0.08978921 2.00871271
D_SmokingStatus3 -0.68602015 0.37645799
OCS_YN1           0.21442443 4.22827283
ICS_YN1          -0.80966224 0.20124762
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure5_tables/231218_ACQ5_moderate.csv"),quote = FALSE)
Code
fit <- lm(S_ACQ_5_TOTAL ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = subset(ACQ_5, D_ASTHMA_SEVERITYGRADE_SCREEN==3))
summary(fit)

Call:
lm(formula = S_ACQ_5_TOTAL ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = subset(ACQ_5, 
    D_ASTHMA_SEVERITYGRADE_SCREEN == 3))

Residuals:
    Min      1Q  Median      3Q     Max 
-2.3830 -0.6487  0.0611  0.6229  1.8935 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)      -4.142014   1.810903  -2.287 0.025121 *  
Eotaxin.3         0.055599   0.084143   0.661 0.510868    
G.CSF             0.015657   0.047826   0.327 0.744333    
IFN.g             0.111046   0.090107   1.232 0.221817    
IL.10            -0.047503   0.095959  -0.495 0.622080    
IL.13            -0.068471   0.072215  -0.948 0.346223    
IL.17            -0.062100   0.106074  -0.585 0.560084    
IL.1alpha         0.035205   0.123588   0.285 0.776575    
IL.1F7           -0.092572   0.113529  -0.815 0.417531    
IL.24            -0.045353   0.041550  -1.092 0.278685    
IL.33             0.017428   0.053067   0.328 0.743551    
IL.4              0.005627   0.106909   0.053 0.958166    
IL.5             -0.067217   0.072867  -0.922 0.359369    
IL.8              0.226418   0.139319   1.625 0.108496    
Periostin        -0.006678   0.043716  -0.153 0.879012    
SCGB1A.1          0.060639   0.114925   0.528 0.599368    
TNF.alpha        -0.192430   0.155824  -1.235 0.220875    
year2018          0.975302   0.753951   1.294 0.199943    
D_SEX1            0.875760   0.235889   3.713 0.000401 ***
D_AGE             0.025321   0.009544   2.653 0.009805 ** 
D_SmokingStatus2  0.978590   0.606053   1.615 0.110751    
D_SmokingStatus3 -0.305756   0.235355  -1.299 0.198046    
OCS_YN1          -0.438184   0.374938  -1.169 0.246386    
ICS_YN1           0.970520   0.371979   2.609 0.011035 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1 on 72 degrees of freedom
Multiple R-squared:  0.4363,    Adjusted R-squared:  0.2562 
F-statistic: 2.422 on 23 and 72 DF,  p-value: 0.002344
Code
confint(fit,level = 0.95)
                        2.5 %      97.5 %
(Intercept)      -7.751983605 -0.53204363
Eotaxin.3        -0.112137460  0.22333645
G.CSF            -0.079682295  0.11099654
IFN.g            -0.068579277  0.29067190
IL.10            -0.238794293  0.14378733
IL.13            -0.212429786  0.07548738
IL.17            -0.273554976  0.14935529
IL.1alpha        -0.211164603  0.28157370
IL.1F7           -0.318887859  0.13374412
IL.24            -0.128181883  0.03747623
IL.33            -0.088359063  0.12321507
IL.4             -0.207491671  0.21874653
IL.5             -0.212473922  0.07804050
IL.8             -0.051310065  0.50414557
Periostin        -0.093824004  0.08046760
SCGB1A.1         -0.168458587  0.28973732
TNF.alpha        -0.503059242  0.11819918
year2018         -0.527672894  2.47827645
D_SEX1            0.405524064  1.34599555
D_AGE             0.006296138  0.04434666
D_SmokingStatus2 -0.229555188  2.18673594
D_SmokingStatus3 -0.774927762  0.16341665
OCS_YN1          -1.185609932  0.30924205
ICS_YN1           0.228992861  1.71204782
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,] 

##write.csv(x = res,file = paste0(prefix.tables,"231218_figure5_tables/231218_ACQ5_severe.csv"),quote = FALSE)
Code
fit2 <- lm(S_ACQ_5_TOTAL ~ D_ASTHMA_SEVERITYGRADE_SCREEN 
           + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
           data = ACQ_5) # reference = mild not healthy!
summary(fit2)

Call:
lm(formula = S_ACQ_5_TOTAL ~ D_ASTHMA_SEVERITYGRADE_SCREEN + 
    year + D_SEX + D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, 
    data = ACQ_5)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.4048 -0.6734 -0.1127  0.5713  4.0038 

Coefficients:
                                Estimate Std. Error t value Pr(>|t|)    
(Intercept)                     0.071624   0.313535   0.228  0.81953    
D_ASTHMA_SEVERITYGRADE_SCREEN2  0.205576   0.186223   1.104  0.27093    
D_ASTHMA_SEVERITYGRADE_SCREEN3  0.901730   0.201812   4.468 1.31e-05 ***
year2018                        0.342036   0.146659   2.332  0.02067 *  
D_SEX1                          0.380577   0.141171   2.696  0.00761 ** 
D_AGE                           0.006483   0.005222   1.242  0.21582    
D_SmokingStatus2                0.613180   0.295439   2.075  0.03920 *  
D_SmokingStatus3               -0.127713   0.148501  -0.860  0.39079    
OCS_YN1                         0.391208   0.243362   1.608  0.10949    
ICS_YN1                         0.095223   0.179452   0.531  0.59625    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.9892 on 204 degrees of freedom
Multiple R-squared:  0.2943,    Adjusted R-squared:  0.2631 
F-statistic: 9.452 on 9 and 204 DF,  p-value: 5.429e-12
Code
confint(fit2,level = 0.95)
                                      2.5 %     97.5 %
(Intercept)                    -0.546559414 0.68980821
D_ASTHMA_SEVERITYGRADE_SCREEN2 -0.161592272 0.57274502
D_ASTHMA_SEVERITYGRADE_SCREEN3  0.503824390 1.29963542
year2018                        0.052874873 0.63119770
D_SEX1                          0.102236534 0.65891827
D_AGE                          -0.003812381 0.01677904
D_SmokingStatus2                0.030674042 1.19568625
D_SmokingStatus3               -0.420506431 0.16508130
OCS_YN1                        -0.088618865 0.87103521
ICS_YN1                        -0.258595290 0.44904202
Code
##write.csv(summary(fit2)$coefficients, file=paste0(prefix.tables,"231204_figure1_tables/231204_functional_Boxplot_asthma_severity_ACQ5.csv"))

Figure 34 ACQ5 value distribution per asthma severity

Code
#pdf(file=paste0(prefix.plots,"_Boxplot_asthma_severity_ACQ_5.pdf"), width=10 , height=10)
ggplot(data = ACQ_5 , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =S_ACQ_5_TOTAL)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width= 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), axis.text.y = element_text(size=10), axis.title=element_text(size=10,face="bold"), legend.position = "none", legend.text = element_text(size=10))+
  xlab("")+
  ylab("ACQ 5 Score")+
  scale_x_discrete(labels=c("mild", "moderate", "severe"))+ 
  scale_fill_manual(name= "Severity grade",labels =c("mild", "moderate", "severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd" )) +
  ylim(c(min(meta2$S_ACQ_5_TOTAL,na.rm = T),max(meta2$S_ACQ_5_TOTAL,na.rm = T) + 1)) +
  geom_signif(y_position=max(meta2$S_ACQ_5_TOTAL,na.rm = T) + 1, xmin=c(1), xmax=c(1),annotation=c("0.82"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$S_ACQ_5_TOTAL,na.rm = T) + 1, xmin=c(2), xmax=c(2),annotation=c("0.27"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$S_ACQ_5_TOTAL,na.rm = T) + 1, xmin=c(3), xmax=c(3),annotation=c("1.31e-05"), tip_length=0,textsize = 2,linetype = "blank")
Figure 34: ACQ5 value distribution per asthma severity
Code
to.replace <- c()
for(i in summary(fit2)$coefficients[,4][1:4]){
  if(i < 0.001){
    to.replace <- c(to.replace,"***")
  }else if(i < 0.01){
    to.replace <- c(to.replace,"**")
  }else if(i < 0.05){
    to.replace <- c(to.replace,"*")
  }else if(i < 0.1){
    to.replace <- c(to.replace,"+")
  }else{
    to.replace <- c(to.replace,"n.s.")
  }
}

p <- ggplot(data = ACQ_5 , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =S_ACQ_5_TOTAL)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), 
                                                                                           axis.text.y = element_text(size=10), 
                                                                                           axis.title.y = element_text(size=10,face="bold"),
                                                                                           axis.title.x =element_blank(), legend.position = "none", 
                                                                                           legend.text = element_text(size=10)) + 
  ylim(c(min(meta2$S_ACQ_5_TOTAL,na.rm = T),max(meta2$S_ACQ_5_TOTAL,na.rm = T) + 1)) +
  ylab("ACQ 5 Score") +
  scale_x_discrete(labels=c("Mild", "Moderate", "Severe"))+
  scale_fill_manual(name= "Severity grade",labels =c("Mild", "Moderate", "Severe"), values=c("#bdd7e7", "#6baed6", "#3182bd" )) +
  geom_signif(y_position=max(meta2$S_ACQ_5_TOTAL,na.rm = T) + .5, xmin=c(1), xmax=c(1),annotation=c(to.replace[1]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$S_ACQ_5_TOTAL,na.rm = T) + .5, xmin=c(2), xmax=c(2),annotation=c(to.replace[2]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$S_ACQ_5_TOTAL,na.rm = T) + .5, xmin=c(3), xmax=c(3),annotation=c(to.replace[3]), tip_length=0,textsize = 3.5,linetype = "blank") 

#ggsave(filename = paste0(prefix.plots,"231204_figure1/231204_functional_Boxplot_asthma_severity_ACQ5.pdf"),plot = p,units = "cm",width = 8,height = 8)

3.10 X5Hz

Code
X5Hz <-meta2[!is.na(meta2$L_IOS_X5Hz), ]
summary(X5Hz$L_IOS_X5Hz)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
-1.0000 -0.2000 -0.1300 -0.1602 -0.0900  0.7000 
Code
fit <- lm(L_IOS_X5Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = X5Hz)
summary(fit)

Call:
lm(formula = L_IOS_X5Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = X5Hz)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.72867 -0.04393  0.01905  0.07037  0.90676 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)  
(Intercept)      -0.1156612  0.1383572  -0.836   0.4040  
Eotaxin.3        -0.0070476  0.0069183  -1.019   0.3094  
G.CSF            -0.0056612  0.0040506  -1.398   0.1635  
IFN.g            -0.0087349  0.0077128  -1.133   0.2585  
IL.10             0.0052365  0.0074638   0.702   0.4836  
IL.13             0.0054410  0.0058894   0.924   0.3565  
IL.17            -0.0034612  0.0094428  -0.367   0.7143  
IL.1alpha         0.0026282  0.0097350   0.270   0.7874  
IL.1F7           -0.0034788  0.0090892  -0.383   0.7022  
IL.24             0.0059117  0.0036193   1.633   0.1037  
IL.33             0.0044771  0.0041474   1.079   0.2814  
IL.4             -0.0001986  0.0088396  -0.022   0.9821  
IL.5             -0.0010330  0.0056365  -0.183   0.8547  
IL.8              0.0013585  0.0085701   0.159   0.8742  
Periostin        -0.0037698  0.0040478  -0.931   0.3526  
SCGB1A.1          0.0076413  0.0071281   1.072   0.2848  
TNF.alpha         0.0085186  0.0101438   0.840   0.4018  
year2018          0.0199490  0.0655834   0.304   0.7613  
D_SEX1           -0.0480175  0.0203792  -2.356   0.0193 *
D_AGE            -0.0004268  0.0006717  -0.635   0.5258  
D_SmokingStatus2  0.0255652  0.0397390   0.643   0.5206  
D_SmokingStatus3 -0.0021716  0.0213286  -0.102   0.9190  
OCS_YN1          -0.0090673  0.0339418  -0.267   0.7896  
ICS_YN1          -0.0527873  0.0273321  -1.931   0.0546 .
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.1505 on 244 degrees of freedom
Multiple R-squared:  0.1217,    Adjusted R-squared:  0.03889 
F-statistic:  1.47 on 23 and 244 DF,  p-value: 0.08115
Code
confint(fit,level = 0.95)
                        2.5 %        97.5 %
(Intercept)      -0.388188175  0.1568656930
Eotaxin.3        -0.020674745  0.0065795818
G.CSF            -0.013639770  0.0023174206
IFN.g            -0.023927090  0.0064573832
IL.10            -0.009465269  0.0199382323
IL.13            -0.006159572  0.0170414869
IL.17            -0.022061094  0.0151386462
IL.1alpha        -0.016547236  0.0218035526
IL.1F7           -0.021382213  0.0144245145
IL.24            -0.001217391  0.0130408251
IL.33            -0.003692277  0.0126463823
IL.4             -0.017610350  0.0172131668
IL.5             -0.012135437  0.0100694254
IL.8             -0.015522237  0.0182393237
Periostin        -0.011742774  0.0042032242
SCGB1A.1         -0.006399304  0.0216818113
TNF.alpha        -0.011461918  0.0284991797
year2018         -0.109232939  0.1491308959
D_SEX1           -0.088159153 -0.0078759357
D_AGE            -0.001749853  0.0008962869
D_SmokingStatus2 -0.052710020  0.1038403631
D_SmokingStatus3 -0.044183256  0.0398399994
OCS_YN1          -0.075923560  0.0577890091
ICS_YN1          -0.106624314  0.0010496623
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]
WARNING: OCS could not be used because all mild cases are equal to 0. The model needs at least one sample with OCS equal. to 1 to contrast.
Code
fit <- lm(L_IOS_X5Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + ICS_YN,
          data = subset(X5Hz, D_ASTHMA_SEVERITYGRADE_SCREEN==1))
summary(fit)

Call:
lm(formula = L_IOS_X5Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + ICS_YN, data = subset(X5Hz, D_ASTHMA_SEVERITYGRADE_SCREEN == 
    1))

Residuals:
      Min        1Q    Median        3Q       Max 
-0.237303 -0.024607  0.005341  0.053590  0.103369 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)
(Intercept)      -0.1530090  0.3203673  -0.478    0.637
Eotaxin.3        -0.0002137  0.0128456  -0.017    0.987
G.CSF            -0.0060270  0.0078638  -0.766    0.451
IFN.g            -0.0106927  0.0138446  -0.772    0.447
IL.10             0.0038946  0.0239167   0.163    0.872
IL.13             0.0058469  0.0098993   0.591    0.560
IL.17             0.0031829  0.0219114   0.145    0.886
IL.1alpha        -0.0105341  0.0213082  -0.494    0.626
IL.1F7            0.0173591  0.0257384   0.674    0.506
IL.24            -0.0018209  0.0086073  -0.212    0.834
IL.33             0.0101129  0.0078882   1.282    0.212
IL.4             -0.0030238  0.0210620  -0.144    0.887
IL.5             -0.0129980  0.0142941  -0.909    0.372
IL.8              0.0132534  0.0187924   0.705    0.487
Periostin        -0.0046063  0.0105077  -0.438    0.665
SCGB1A.1         -0.0063128  0.0194593  -0.324    0.748
TNF.alpha        -0.0153288  0.0255972  -0.599    0.555
year2018         -0.0800274  0.1819849  -0.440    0.664
D_SEX1           -0.0284573  0.0392740  -0.725    0.476
D_AGE            -0.0016002  0.0013675  -1.170    0.253
D_SmokingStatus2 -0.0865454  0.0909305  -0.952    0.351
D_SmokingStatus3  0.0199258  0.0478064   0.417    0.681
ICS_YN1          -0.0101468  0.0453195  -0.224    0.825

Residual standard error: 0.0981 on 24 degrees of freedom
Multiple R-squared:   0.35, Adjusted R-squared:  -0.2458 
F-statistic: 0.5875 on 22 and 24 DF,  p-value: 0.8929
Code
confint(fit,level = 0.95)
                        2.5 %      97.5 %
(Intercept)      -0.814214573 0.508196625
Eotaxin.3        -0.026725749 0.026298367
G.CSF            -0.022257120 0.010203024
IFN.g            -0.039266500 0.017881115
IL.10            -0.045466985 0.053256230
IL.13            -0.014584379 0.026278125
IL.17            -0.042040095 0.048405906
IL.1alpha        -0.054512112 0.033443880
IL.1F7           -0.035762297 0.070480420
IL.24            -0.019585397 0.015943679
IL.33            -0.006167506 0.026393209
IL.4             -0.046493578 0.040445933
IL.5             -0.042499660 0.016503603
IL.8             -0.025532136 0.052039013
Periostin        -0.026293071 0.017080520
SCGB1A.1         -0.046474900 0.033849301
TNF.alpha        -0.068158778 0.037501139
year2018         -0.455625775 0.295570981
D_SEX1           -0.109514734 0.052600230
D_AGE            -0.004422460 0.001222102
D_SmokingStatus2 -0.274216794 0.101125931
D_SmokingStatus3 -0.078741674 0.118593269
ICS_YN1          -0.103681656 0.083388077
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]

##write.csv(x = res,file = paste0(prefix.tables,"231219_figure6_tables/231219_X5Hz_mild.csv"),quote = FALSE)
WARNING: OCS could not be used because all mild cases are equal to 0. The model needs at least one sample with OCS equal. to 1 to contrast.
Code
fit <- lm(L_IOS_X5Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + ICS_YN,
          data = subset(X5Hz, D_ASTHMA_SEVERITYGRADE_SCREEN==2))
summary(fit)

Call:
lm(formula = L_IOS_X5Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + ICS_YN, data = subset(X5Hz, D_ASTHMA_SEVERITYGRADE_SCREEN == 
    2))

Residuals:
      Min        1Q    Median        3Q       Max 
-0.305307 -0.042783  0.009743  0.055434  0.169374 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)
(Intercept)      -2.932e-01  2.268e-01  -1.293    0.203
Eotaxin.3        -4.048e-03  1.378e-02  -0.294    0.770
G.CSF            -5.718e-03  6.071e-03  -0.942    0.352
IFN.g            -1.260e-02  1.372e-02  -0.918    0.364
IL.10             1.592e-02  1.103e-02   1.444    0.156
IL.13             7.401e-03  1.384e-02   0.535    0.596
IL.17            -2.427e-05  1.954e-02  -0.001    0.999
IL.1alpha         1.775e-03  1.895e-02   0.094    0.926
IL.1F7           -6.924e-03  1.944e-02  -0.356    0.724
IL.24             1.972e-03  5.642e-03   0.349    0.729
IL.33            -2.927e-03  7.589e-03  -0.386    0.702
IL.4              3.356e-03  1.459e-02   0.230    0.819
IL.5             -1.012e-02  9.059e-03  -1.117    0.271
IL.8              5.361e-03  1.170e-02   0.458    0.649
Periostin         6.352e-03  7.994e-03   0.795    0.431
SCGB1A.1          2.877e-03  8.395e-03   0.343    0.734
TNF.alpha        -5.335e-03  1.274e-02  -0.419    0.678
year2018          1.816e-03  1.194e-01   0.015    0.988
D_SEX1            2.889e-03  3.443e-02   0.084    0.934
D_AGE            -2.136e-04  1.106e-03  -0.193    0.848
D_SmokingStatus2  4.097e-02  8.015e-02   0.511    0.612
D_SmokingStatus3 -2.443e-02  3.563e-02  -0.686    0.497
ICS_YN1           3.375e-03  3.470e-02   0.097    0.923

Residual standard error: 0.1101 on 41 degrees of freedom
Multiple R-squared:  0.2166,    Adjusted R-squared:  -0.2037 
F-statistic: 0.5154 on 22 and 41 DF,  p-value: 0.9507
Code
confint(fit,level = 0.95)
                        2.5 %      97.5 %
(Intercept)      -0.751289803 0.164798587
Eotaxin.3        -0.031868242 0.023771990
G.CSF            -0.017978483 0.006543038
IFN.g            -0.040298286 0.015106674
IL.10            -0.006346321 0.038191050
IL.13            -0.020558024 0.035360112
IL.17            -0.039490482 0.039441934
IL.1alpha        -0.036495233 0.040044369
IL.1F7           -0.046183655 0.032335914
IL.24            -0.009423370 0.013366477
IL.33            -0.018252489 0.012398179
IL.4             -0.026107698 0.032820567
IL.5             -0.028410533 0.008179309
IL.8             -0.018257487 0.028980063
Periostin        -0.009791977 0.022496621
SCGB1A.1         -0.014076621 0.019831590
TNF.alpha        -0.031071678 0.020401261
year2018         -0.239248280 0.242879818
D_SEX1           -0.066644354 0.072421466
D_AGE            -0.002447277 0.002020156
D_SmokingStatus2 -0.120888475 0.202830128
D_SmokingStatus3 -0.096381501 0.047516765
ICS_YN1          -0.066709335 0.073459983
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]

##write.csv(x = res,file = paste0(prefix.tables,"231219_figure6_tables/231219_X5Hz_moderate.csv"),quote = FALSE)
Code
fit <- lm(L_IOS_X5Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = subset(X5Hz, D_ASTHMA_SEVERITYGRADE_SCREEN==3))
summary(fit)

Call:
lm(formula = L_IOS_X5Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = subset(X5Hz, 
    D_ASTHMA_SEVERITYGRADE_SCREEN == 3))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.60558 -0.11939  0.01848  0.10776  0.90440 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)  
(Intercept)      -0.1167435  0.4508013  -0.259   0.7964  
Eotaxin.3        -0.0098337  0.0195176  -0.504   0.6159  
G.CSF            -0.0068075  0.0108521  -0.627   0.5325  
IFN.g            -0.0041776  0.0203498  -0.205   0.8379  
IL.10             0.0027169  0.0223829   0.121   0.9037  
IL.13             0.0068648  0.0169492   0.405   0.6867  
IL.17            -0.0352131  0.0243347  -1.447   0.1523  
IL.1alpha         0.0039337  0.0278006   0.141   0.8879  
IL.1F7           -0.0038897  0.0261924  -0.149   0.8824  
IL.24             0.0162425  0.0095300   1.704   0.0927 .
IL.33            -0.0012674  0.0119274  -0.106   0.9157  
IL.4              0.0040415  0.0247150   0.164   0.8706  
IL.5              0.0096099  0.0167407   0.574   0.5678  
IL.8             -0.0219151  0.0331671  -0.661   0.5109  
Periostin        -0.0006062  0.0101483  -0.060   0.9525  
SCGB1A.1          0.0445779  0.0263368   1.693   0.0949 .
TNF.alpha         0.0411347  0.0356614   1.153   0.2526  
year2018          0.0182912  0.1816880   0.101   0.9201  
D_SEX1           -0.0863862  0.0526928  -1.639   0.1055  
D_AGE            -0.0001266  0.0021548  -0.059   0.9533  
D_SmokingStatus2 -0.0071512  0.1378667  -0.052   0.9588  
D_SmokingStatus3  0.0249628  0.0545094   0.458   0.6484  
OCS_YN1           0.1310551  0.0853169   1.536   0.1290  
ICS_YN1          -0.1520764  0.0849370  -1.790   0.0776 .
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.2273 on 71 degrees of freedom
Multiple R-squared:  0.2023,    Adjusted R-squared:  -0.05613 
F-statistic: 0.7828 on 23 and 71 DF,  p-value: 0.7403
Code
confint(fit,level = 0.95)
                        2.5 %      97.5 %
(Intercept)      -1.015615668 0.782128747
Eotaxin.3        -0.048750717 0.029083301
G.CSF            -0.028446021 0.014830953
IFN.g            -0.044753895 0.036398684
IL.10            -0.041913312 0.047347125
IL.13            -0.026930817 0.040660504
IL.17            -0.083735072 0.013308776
IL.1alpha        -0.051499143 0.059366486
IL.1F7           -0.056115843 0.048336379
IL.24            -0.002759848 0.035244865
IL.33            -0.025049845 0.022515126
IL.4             -0.045238738 0.053321797
IL.5             -0.023770100 0.042989897
IL.8             -0.088048491 0.044218280
Periostin        -0.020841445 0.019628990
SCGB1A.1         -0.007936226 0.097092096
TNF.alpha        -0.029972076 0.112241494
year2018         -0.343984360 0.380566715
D_SEX1           -0.191452693 0.018680268
D_AGE            -0.004423098 0.004169836
D_SmokingStatus2 -0.282049698 0.267747213
D_SmokingStatus3 -0.083725820 0.133651441
OCS_YN1          -0.039061911 0.301172160
ICS_YN1          -0.321435906 0.017283157
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,][-1,]

##write.csv(x = res,file = paste0(prefix.tables,"231219_figure6_tables/231219_X5Hz_severe.csv"),quote = FALSE)
Code
fit2 <- lm(L_IOS_X5Hz ~ D_ASTHMA_SEVERITYGRADE_SCREEN 
           + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
           data = X5Hz)
summary(fit2)

Call:
lm(formula = L_IOS_X5Hz ~ D_ASTHMA_SEVERITYGRADE_SCREEN + year + 
    D_SEX + D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = X5Hz)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.77221 -0.03583  0.01498  0.05113  0.92779 

Coefficients:
                                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)                    -0.0509765  0.0385656  -1.322  0.18741    
D_ASTHMA_SEVERITYGRADE_SCREEN1 -0.0523201  0.0290203  -1.803  0.07258 .  
D_ASTHMA_SEVERITYGRADE_SCREEN2 -0.0758517  0.0275020  -2.758  0.00623 ** 
D_ASTHMA_SEVERITYGRADE_SCREEN3 -0.1222565  0.0293486  -4.166 4.24e-05 ***
year2018                       -0.0163228  0.0197598  -0.826  0.40954    
D_SEX1                         -0.0372181  0.0184217  -2.020  0.04439 *  
D_AGE                          -0.0001286  0.0006429  -0.200  0.84166    
D_SmokingStatus2                0.0024953  0.0371274   0.067  0.94647    
D_SmokingStatus3                0.0042983  0.0200467   0.214  0.83039    
OCS_YN1                         0.0329449  0.0367412   0.897  0.37073    
ICS_YN1                        -0.0299031  0.0271862  -1.100  0.27239    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.1465 on 257 degrees of freedom
Multiple R-squared:  0.1238,    Adjusted R-squared:  0.08971 
F-statistic: 3.631 on 10 and 257 DF,  p-value: 0.0001526
Code
confint(fit2,level = 0.95)
                                      2.5 %        97.5 %
(Intercept)                    -0.126921442  0.0249683600
D_ASTHMA_SEVERITYGRADE_SCREEN1 -0.109468002  0.0048278082
D_ASTHMA_SEVERITYGRADE_SCREEN2 -0.130009680 -0.0216936233
D_ASTHMA_SEVERITYGRADE_SCREEN3 -0.180050825 -0.0644621412
year2018                       -0.055234592  0.0225890717
D_SEX1                         -0.073494843 -0.0009412867
D_AGE                          -0.001394564  0.0011374456
D_SmokingStatus2               -0.070617454  0.0756080514
D_SmokingStatus3               -0.035178401  0.0437750175
OCS_YN1                        -0.039407285  0.1052970666
ICS_YN1                        -0.083439104  0.0236329259
Code
##write.csv(summary(fit2)$coefficients, file=paste0(prefix.tables,"231204_figure1_tables/231204_functional_Boxplot_asthma_severity_X5Hz.csv"))

@x5hz-severity X5Hz value distribution per asthma severity

Code
#pdf(file=paste0(prefix.plots,"_Boxplot_asthma_severity_FVC.pdf"), width=10 , height=10)
ggplot(data = X5Hz , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_IOS_X5Hz)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), axis.text.y = element_text(size=10), axis.title=element_text(size=10,face="bold"), legend.position = "none", legend.text = element_text(size=10))+ ylim(c(min(meta2$L_IOS_X5Hz,na.rm = T),max(meta2$L_IOS_X5Hz,na.rm = T) + 0.1)) +
  xlab("")+
  ylab("X5Hz [kPa/l/s]")+
  scale_x_discrete(labels=c("healthy", "mild", "moderate", "severe"))+ 
  scale_fill_manual(name= "Severity grade",labels =c("healthy", "mild", "moderate", "severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd")) +
  geom_signif(y_position=max(meta2$L_IOS_X5Hz,na.rm = T) + 0.1, xmin=c(1), xmax=c(1),annotation=c("0.19"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_X5Hz,na.rm = T) + 0.1, xmin=c(2), xmax=c(2),annotation=c("0.07"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_X5Hz,na.rm = T) + 0.1, xmin=c(3), xmax=c(3),annotation=c("6.23e-3"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_X5Hz,na.rm = T) + 0.1, xmin=c(4), xmax=c(4),annotation=c("4.24e-5"), tip_length=0,textsize = 2,linetype = "blank")
Figure 35: X5Hz value distribution per asthma severity
Code
to.replace <- c()
for(i in summary(fit2)$coefficients[,4][1:4]){
  if(i < 0.001){
    to.replace <- c(to.replace,"***")
  }else if(i < 0.01){
    to.replace <- c(to.replace,"**")
  }else if(i < 0.05){
    to.replace <- c(to.replace,"*")
  }else if(i < 0.1){
    to.replace <- c(to.replace,"+")
  }else{
    to.replace <- c(to.replace,"n.s.")
  }
}

p <- ggplot(data = X5Hz , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_IOS_X5Hz)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), 
                                                                                           axis.text.y = element_text(size=10), 
                                                                                           axis.title.y = element_text(size=10,face="bold"),
                                                                                           axis.title.x =element_blank(), legend.position = "none", 
                                                                                           legend.text = element_text(size=10)) + 
  ylim(c(min(meta2$L_IOS_X5Hz,na.rm = T),max(meta2$L_IOS_X5Hz,na.rm = T) + 0.1)) +
  ylab("X5Hz (kPa/l/s)") +
  scale_x_discrete(labels=c("Healthy", "Mild", "Moderate", "Severe"))+
  scale_fill_manual(name= "Severity grade",labels =c("Healthy", "Mild", "Moderate", "Severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd" )) +
  geom_signif(y_position=max(meta2$L_IOS_X5Hz,na.rm = T) + .05, xmin=c(1), xmax=c(1),annotation=c(to.replace[1]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_X5Hz,na.rm = T) + .05, xmin=c(2), xmax=c(2),annotation=c(to.replace[2]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_X5Hz,na.rm = T) + .05, xmin=c(3), xmax=c(3),annotation=c(to.replace[3]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_X5Hz,na.rm = T) + .05, xmin=c(4), xmax=c(4),annotation=c(to.replace[4]), tip_length=0,textsize = 3.5,linetype = "blank") 

#ggsave(filename = paste0(prefix.plots,"231204_figure1/231204_functional_Boxplot_asthma_severity_X5Hz.pdf"),plot = p,units = "cm",width = 8,height = 8)

3.11 R5Hz

Code
R5Hz <-meta2[!is.na(meta2$L_IOS_R5Hz), ]
summary(R5Hz$L_IOS_R5Hz)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   0.16    0.32    0.41    0.46    0.55    1.36 
Code
fit <- lm(L_IOS_R5Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = R5Hz)
summary(fit)

Call:
lm(formula = L_IOS_R5Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = R5Hz)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.30060 -0.12209 -0.03248  0.08203  0.85032 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)    
(Intercept)       0.3321960  0.1670460   1.989 0.047857 *  
Eotaxin.3         0.0114270  0.0083528   1.368 0.172556    
G.CSF            -0.0024432  0.0048905  -0.500 0.617814    
IFN.g             0.0046589  0.0093121   0.500 0.617312    
IL.10            -0.0072451  0.0090115  -0.804 0.422187    
IL.13            -0.0090240  0.0071106  -1.269 0.205615    
IL.17            -0.0007645  0.0114008  -0.067 0.946593    
IL.1alpha        -0.0009596  0.0117536  -0.082 0.934998    
IL.1F7            0.0088657  0.0109739   0.808 0.419941    
IL.24            -0.0009598  0.0043698  -0.220 0.826340    
IL.33            -0.0030023  0.0050074  -0.600 0.549346    
IL.4             -0.0078025  0.0106726  -0.731 0.465435    
IL.5              0.0071395  0.0068053   1.049 0.295164    
IL.8              0.0068076  0.0103471   0.658 0.511209    
Periostin         0.0044675  0.0048871   0.914 0.361539    
SCGB1A.1         -0.0169460  0.0086062  -1.969 0.050079 .  
TNF.alpha         0.0018671  0.0122471   0.152 0.878954    
year2018          0.0709061  0.0791824   0.895 0.371414    
D_SEX1            0.0856016  0.0246049   3.479 0.000596 ***
D_AGE             0.0012485  0.0008110   1.539 0.124982    
D_SmokingStatus2 -0.0285830  0.0479790  -0.596 0.551900    
D_SmokingStatus3  0.0062920  0.0257511   0.244 0.807175    
OCS_YN1           0.0455497  0.0409797   1.112 0.267440    
ICS_YN1           0.0488751  0.0329995   1.481 0.139874    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.1817 on 244 degrees of freedom
Multiple R-squared:  0.1679,    Adjusted R-squared:  0.08945 
F-statistic:  2.14 on 23 and 244 DF,  p-value: 0.002425
Code
confint(fit,level = 0.95)
                         2.5 %       97.5 %
(Intercept)       0.0031598013 6.612323e-01
Eotaxin.3        -0.0050257712 2.787982e-02
G.CSF            -0.0120762292 7.189735e-03
IFN.g            -0.0136835066 2.300128e-02
IL.10            -0.0249953109 1.050510e-02
IL.13            -0.0230299463 4.981925e-03
IL.17            -0.0232210874 2.169213e-02
IL.1alpha        -0.0241110676 2.219188e-02
IL.1F7           -0.0127499789 3.048139e-02
IL.24            -0.0095671103 7.647592e-03
IL.33            -0.0128655800 6.860951e-03
IL.4             -0.0288245913 1.321969e-02
IL.5             -0.0062650683 2.054404e-02
IL.8             -0.0135734782 2.718865e-02
Periostin        -0.0051587019 1.409375e-02
SCGB1A.1         -0.0338979113 5.910942e-06
TNF.alpha        -0.0222564384 2.599072e-02
year2018         -0.0850621162 2.268743e-01
D_SEX1            0.0371364866 1.340667e-01
D_AGE            -0.0003489254 2.845900e-03
D_SmokingStatus2 -0.1230888412 6.592275e-02
D_SmokingStatus3 -0.0444309002 5.701484e-02
OCS_YN1          -0.0351694919 1.262688e-01
ICS_YN1          -0.0161251951 1.138753e-01
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]
WARNING: OCS could not be used because all mild cases are equal to 0. The model needs at least one sample with OCS equal. to 1 to contrast.
Code
fit <- lm(L_IOS_R5Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + ICS_YN,
          data = subset(R5Hz, D_ASTHMA_SEVERITYGRADE_SCREEN==1))
summary(fit)

Call:
lm(formula = L_IOS_R5Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + ICS_YN, data = subset(R5Hz, D_ASTHMA_SEVERITYGRADE_SCREEN == 
    1))

Residuals:
      Min        1Q    Median        3Q       Max 
-0.170866 -0.072229 -0.008546  0.064136  0.227603 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)  
(Intercept)       0.748145   0.440624   1.698   0.1025  
Eotaxin.3         0.008951   0.017667   0.507   0.6170  
G.CSF             0.008012   0.010816   0.741   0.4660  
IFN.g             0.001106   0.019041   0.058   0.9542  
IL.10            -0.024387   0.032894  -0.741   0.4657  
IL.13             0.005158   0.013615   0.379   0.7081  
IL.17             0.009621   0.030136   0.319   0.7523  
IL.1alpha         0.020903   0.029307   0.713   0.4826  
IL.1F7            0.009342   0.035400   0.264   0.7941  
IL.24             0.004582   0.011838   0.387   0.7021  
IL.33            -0.011720   0.010849  -1.080   0.2908  
IL.4             -0.015321   0.028968  -0.529   0.6017  
IL.5              0.005667   0.019660   0.288   0.7756  
IL.8             -0.036385   0.025846  -1.408   0.1720  
Periostin         0.013857   0.014452   0.959   0.3472  
SCGB1A.1         -0.019697   0.026764  -0.736   0.4689  
TNF.alpha         0.045338   0.035206   1.288   0.2101  
year2018         -0.024164   0.250297  -0.097   0.9239  
D_SEX1            0.101706   0.054016   1.883   0.0719 .
D_AGE             0.002097   0.001881   1.115   0.2758  
D_SmokingStatus2  0.190589   0.125063   1.524   0.1406  
D_SmokingStatus3  0.027035   0.065751   0.411   0.6846  
ICS_YN1           0.022086   0.062331   0.354   0.7262  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.1349 on 24 degrees of freedom
Multiple R-squared:  0.4004,    Adjusted R-squared:  -0.1492 
F-statistic: 0.7285 on 22 and 24 DF,  p-value: 0.7708
Code
confint(fit,level = 0.95)
                        2.5 %      97.5 %
(Intercept)      -0.161257563 1.657547149
Eotaxin.3        -0.027512889 0.045414890
G.CSF            -0.014310694 0.030334016
IFN.g            -0.038193530 0.040405586
IL.10            -0.092277352 0.043503598
IL.13            -0.022942625 0.033258439
IL.17            -0.052577203 0.071819514
IL.1alpha        -0.039582834 0.081389200
IL.1F7           -0.063719410 0.082403636
IL.24            -0.019850597 0.029015030
IL.33            -0.034111525 0.010671507
IL.4             -0.075108225 0.044465772
IL.5             -0.034908846 0.046242472
IL.8             -0.089729799 0.016959233
Periostin        -0.015970466 0.043684271
SCGB1A.1         -0.074934814 0.035540683
TNF.alpha        -0.027322767 0.117998714
year2018         -0.540750287 0.492423208
D_SEX1           -0.009778190 0.213189871
D_AGE            -0.001784428 0.005978934
D_SmokingStatus2 -0.067528359 0.448706771
D_SmokingStatus3 -0.108668830 0.162739733
ICS_YN1          -0.106558737 0.150731365
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]

##write.csv(x = res,file = paste0(prefix.tables,"231219_figure6_tables/231219_R5Hz_mild.csv"),quote = FALSE)
WARNING: OCS could not be used because all mild cases are equal to 0. The model needs at least one sample with OCS equal. to 1 to contrast.
Code
fit <- lm(L_IOS_R5Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + ICS_YN,
          data = subset(R5Hz, D_ASTHMA_SEVERITYGRADE_SCREEN==2))
summary(fit)

Call:
lm(formula = L_IOS_R5Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + ICS_YN, data = subset(R5Hz, D_ASTHMA_SEVERITYGRADE_SCREEN == 
    2))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.36206 -0.09690 -0.00191  0.08173  0.61366 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)  
(Intercept)       0.9763532  0.4177811   2.337   0.0244 *
Eotaxin.3         0.0335455  0.0253747   1.322   0.1935  
G.CSF             0.0042742  0.0111830   0.382   0.7043  
IFN.g            -0.0059604  0.0252674  -0.236   0.8147  
IL.10            -0.0515588  0.0203112  -2.538   0.0150 *
IL.13            -0.0410922  0.0255014  -1.611   0.1148  
IL.17             0.0421250  0.0359970   1.170   0.2487  
IL.1alpha        -0.0189783  0.0349058  -0.544   0.5896  
IL.1F7            0.0376867  0.0358088   1.052   0.2988  
IL.24             0.0038488  0.0103933   0.370   0.7131  
IL.33             0.0037753  0.0139782   0.270   0.7884  
IL.4              0.0073162  0.0268742   0.272   0.7868  
IL.5              0.0119455  0.0166868   0.716   0.4781  
IL.8             -0.0060404  0.0215426  -0.280   0.7806  
Periostin        -0.0190404  0.0147252  -1.293   0.2032  
SCGB1A.1         -0.0268433  0.0154638  -1.736   0.0901 .
TNF.alpha         0.0177418  0.0234742   0.756   0.4541  
year2018         -0.0886036  0.2198740  -0.403   0.6891  
D_SEX1            0.0137952  0.0634208   0.218   0.8289  
D_AGE             0.0004107  0.0020374   0.202   0.8413  
D_SmokingStatus2 -0.0956495  0.1476315  -0.648   0.5207  
D_SmokingStatus3 -0.0020036  0.0656247  -0.031   0.9758  
ICS_YN1          -0.0183989  0.0639241  -0.288   0.7749  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.2028 on 41 degrees of freedom
Multiple R-squared:  0.3224,    Adjusted R-squared:  -0.04126 
F-statistic: 0.8865 on 22 and 41 DF,  p-value: 0.6102
Code
confint(fit,level = 0.95)
                       2.5 %       97.5 %
(Intercept)       0.13262704  1.820079325
Eotaxin.3        -0.01769967  0.084790696
G.CSF            -0.01831033  0.026858781
IFN.g            -0.05698889  0.045068106
IL.10            -0.09257816 -0.010539476
IL.13            -0.09259332  0.010408954
IL.17            -0.03057248  0.114822539
IL.1alpha        -0.08947204  0.051515368
IL.1F7           -0.03463056  0.110003982
IL.24            -0.01714086  0.024838474
IL.33            -0.02445425  0.032004861
IL.4             -0.04695734  0.061589644
IL.5             -0.02175412  0.045645066
IL.8             -0.04954665  0.037465822
Periostin        -0.04877846  0.010697751
SCGB1A.1         -0.05807309  0.004386484
TNF.alpha        -0.02966526  0.065148872
year2018         -0.53264814  0.355441012
D_SEX1           -0.11428578  0.141876109
D_AGE            -0.00370389  0.004525206
D_SmokingStatus2 -0.39379739  0.202498456
D_SmokingStatus3 -0.13453532  0.130528034
ICS_YN1          -0.14749620  0.110698357
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]

##write.csv(x = res,file = paste0(prefix.tables,"231219_figure6_tables/231219_R5Hz_moderate.csv"),quote = FALSE)

Figure 36 Effects over significant covariates in R5Hz (Moderate)

Code
eff_plot <- Effect(focal.predictors = "IL.10" , fit, xlevels=list(IL.10=seq(min(meta2$IL.10) - 1,max(meta2$IL.10) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.10, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.10, y = L_IOS_R5Hz), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.10, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-10 (Moderate)\n(Coeff: -0.05; P-value: 0.02)",
       x = expression('log'[2] * '(Expression)'),
       y = "R5Hz (kPa/l/s)") +
  theme_bw()
(a) Effects for IL-10
Figure 36: Effects over significant covariates in R5Hz (Moderate)
Code
eff_plot <- Effect(focal.predictors = "IL.10" , fit, xlevels=list(IL.10=seq(min(meta2$IL.10) - 1,max(meta2$IL.10) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.10, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.10, y = L_IOS_R5Hz), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.10, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-10 (Moderate)\n(Coeff: -0.05; P-value: 0.02)",
       x = expression('log'[2] * '(Expression)'),
       y = "R5Hz (kPa/l/s)") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231219_figure6/231219_R5Hz_IL10_moderate.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
fit <- lm(L_IOS_R5Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = subset(R5Hz, D_ASTHMA_SEVERITYGRADE_SCREEN==3))
summary(fit)

Call:
lm(formula = L_IOS_R5Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = subset(R5Hz, 
    D_ASTHMA_SEVERITYGRADE_SCREEN == 3))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.38369 -0.12021 -0.01339  0.08665  0.59028 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)  
(Intercept)      -0.1858629  0.4089375  -0.455   0.6509  
Eotaxin.3        -0.0009095  0.0177051  -0.051   0.9592  
G.CSF            -0.0220282  0.0098443  -2.238   0.0284 *
IFN.g            -0.0049683  0.0184600  -0.269   0.7886  
IL.10             0.0022063  0.0203043   0.109   0.9138  
IL.13            -0.0186827  0.0153752  -1.215   0.2283  
IL.17             0.0103110  0.0220748   0.467   0.6419  
IL.1alpha         0.0283278  0.0252189   1.123   0.2651  
IL.1F7           -0.0210665  0.0237600  -0.887   0.3783  
IL.24            -0.0040325  0.0086450  -0.466   0.6423  
IL.33             0.0007358  0.0108197   0.068   0.9460  
IL.4             -0.0166827  0.0224198  -0.744   0.4593  
IL.5              0.0005959  0.0151861   0.039   0.9688  
IL.8              0.0484475  0.0300871   1.610   0.1118  
Periostin         0.0151303  0.0092059   1.644   0.1047  
SCGB1A.1         -0.0212580  0.0238911  -0.890   0.3766  
TNF.alpha        -0.0002027  0.0323497  -0.006   0.9950  
year2018          0.3422274  0.1648155   2.076   0.0415 *
D_SEX1            0.1010317  0.0477995   2.114   0.0381 *
D_AGE             0.0022070  0.0019547   1.129   0.2627  
D_SmokingStatus2  0.1055038  0.1250637   0.844   0.4017  
D_SmokingStatus3 -0.0596330  0.0494474  -1.206   0.2318  
OCS_YN1          -0.1189940  0.0773939  -1.538   0.1286  
ICS_YN1           0.0554497  0.0770493   0.720   0.4741  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.2062 on 71 degrees of freedom
Multiple R-squared:  0.2464,    Adjusted R-squared:  0.002268 
F-statistic: 1.009 on 23 and 71 DF,  p-value: 0.4661
Code
confint(fit,level = 0.95)
                        2.5 %       97.5 %
(Intercept)      -1.001261170  0.629535299
Eotaxin.3        -0.036212473  0.034393471
G.CSF            -0.041657257 -0.002399209
IFN.g            -0.041776486  0.031839840
IL.10            -0.038279349  0.042691897
IL.13            -0.049339963  0.011974475
IL.17            -0.033704950  0.054326899
IL.1alpha        -0.021957263  0.078612804
IL.1F7           -0.068442581  0.026309662
IL.24            -0.021270156  0.013205241
IL.33            -0.020838126  0.022309713
IL.4             -0.061386498  0.028021191
IL.5             -0.029684261  0.030876053
IL.8             -0.011544429  0.108439358
Periostin        -0.003225811  0.033486327
SCGB1A.1         -0.068895421  0.026379422
TNF.alpha        -0.064706138  0.064300736
year2018          0.013594650  0.670860124
D_SEX1            0.005722202  0.196341117
D_AGE            -0.001690501  0.006104448
D_SmokingStatus2 -0.143866142  0.354873754
D_SmokingStatus3 -0.158228252  0.038962220
OCS_YN1          -0.273313088  0.035325068
ICS_YN1          -0.098182262  0.209081577
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,][-1,]

##write.csv(x = res,file = paste0(prefix.tables,"231219_figure6_tables/231219_R5Hz_severe.csv"),quote = FALSE)

Figure 37 Effects over significant covariates in R5Hz (Severe)

Code
eff_plot <- Effect(focal.predictors = "G.CSF" , fit, xlevels=list(G.CSF=seq(min(meta2$G.CSF) - 1,max(meta2$G.CSF) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = G.CSF, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = G.CSF, y = L_IOS_R5Hz), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = G.CSF, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "G-CSF (Severe)\n(Coeff: -0.02; P-value: 0.03)",
       x = expression('log'[2] * '(Expression)'),
       y = "R5Hz (kPa/l/s)") +
  theme_bw()
(a) Effects for G.CSF
Figure 37: Effects over significant covariates in R5Hz (Severe)
Code
eff_plot <- Effect(focal.predictors = "G.CSF" , fit, xlevels=list(G.CSF=seq(min(meta2$G.CSF) - 1,max(meta2$G.CSF) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = G.CSF, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = G.CSF, y = L_IOS_R5Hz), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = G.CSF, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "G-CSF (Severe)\n(Coeff: -0.02; P-value: 0.03)",
       x = expression('log'[2] * '(Expression)'),
       y = "R5Hz (kPa/l/s)") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231219_figure6/231219_R5Hz_GCSF_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
fit2 <- lm(L_IOS_R5Hz ~ D_ASTHMA_SEVERITYGRADE_SCREEN 
           + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
           data = R5Hz)
summary(fit2)

Call:
lm(formula = L_IOS_R5Hz ~ D_ASTHMA_SEVERITYGRADE_SCREEN + year + 
    D_SEX + D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = R5Hz)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.30855 -0.11111 -0.02572  0.05021  0.86221 

Coefficients:
                                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)                     0.2494617  0.0443708   5.622 4.91e-08 ***
D_ASTHMA_SEVERITYGRADE_SCREEN1  0.1138612  0.0333887   3.410 0.000754 ***
D_ASTHMA_SEVERITYGRADE_SCREEN2  0.1400523  0.0316418   4.426 1.42e-05 ***
D_ASTHMA_SEVERITYGRADE_SCREEN3  0.2245623  0.0337664   6.650 1.75e-10 ***
year2018                        0.0246270  0.0227342   1.083 0.279711    
D_SEX1                          0.0722343  0.0211947   3.408 0.000759 ***
D_AGE                           0.0005853  0.0007397   0.791 0.429496    
D_SmokingStatus2               -0.0100537  0.0427161  -0.235 0.814116    
D_SmokingStatus3               -0.0096564  0.0230643  -0.419 0.675804    
OCS_YN1                        -0.0182025  0.0422718  -0.431 0.667116    
ICS_YN1                         0.0028917  0.0312784   0.092 0.926411    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.1685 on 257 degrees of freedom
Multiple R-squared:  0.2462,    Adjusted R-squared:  0.2169 
F-statistic: 8.394 on 10 and 257 DF,  p-value: 8.381e-12
Code
confint(fit2,level = 0.95)
                                       2.5 %      97.5 %
(Intercept)                     0.1620849905 0.336838360
D_ASTHMA_SEVERITYGRADE_SCREEN1  0.0481109319 0.179611386
D_ASTHMA_SEVERITYGRADE_SCREEN2  0.0777419914 0.202362576
D_ASTHMA_SEVERITYGRADE_SCREEN3  0.1580683787 0.291056319
year2018                       -0.0201421443 0.069396108
D_SEX1                          0.0304968758 0.113971725
D_AGE                          -0.0008712745 0.002041872
D_SmokingStatus2               -0.0941719205 0.074064520
D_SmokingStatus3               -0.0550754369 0.035762630
OCS_YN1                        -0.1014456132 0.065040699
ICS_YN1                        -0.0587028995 0.064486397
Code
##write.csv(summary(fit2)$coefficients, file=paste0(prefix.tables,"231204_figure1_tables/231204_functional_Boxplot_asthma_severity_R5Hz.csv"))

@r5hz-severity R5Hz value distribution per asthma severity

Code
#pdf(file=paste0(prefix.plots,"_Boxplot_asthma_severity_FVC.pdf"), width=10 , height=10)
ggplot(data = R5Hz , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_IOS_R5Hz)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), axis.text.y = element_text(size=10), axis.title=element_text(size=10,face="bold"), legend.position = "none", legend.text = element_text(size=10))+ ylim(c(min(meta2$L_IOS_R5Hz,na.rm = T),max(meta2$L_IOS_R5Hz,na.rm = T) + 0.1)) +
  xlab("")+
  ylab("R5Hz [kPa/l/s]")+
  scale_x_discrete(labels=c("healthy", "mild", "moderate", "severe"))+ 
  scale_fill_manual(name= "Severity grade",labels =c("healthy", "mild", "moderate", "severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd")) +
  geom_signif(y_position=max(meta2$L_IOS_R5Hz,na.rm = T) + 0.1, xmin=c(1), xmax=c(1),annotation=c("4.91e-8"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_R5Hz,na.rm = T) + 0.1, xmin=c(2), xmax=c(2),annotation=c("7.54e-4"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_R5Hz,na.rm = T) + 0.1, xmin=c(3), xmax=c(3),annotation=c("1.42e-5"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_R5Hz,na.rm = T) + 0.1, xmin=c(4), xmax=c(4),annotation=c("1.75e-10"), tip_length=0,textsize = 2,linetype = "blank")
Figure 38: R5Hz value distribution per asthma severity
Code
to.replace <- c()
for(i in summary(fit2)$coefficients[,4][1:4]){
  if(i < 0.001){
    to.replace <- c(to.replace,"***")
  }else if(i < 0.01){
    to.replace <- c(to.replace,"**")
  }else if(i < 0.05){
    to.replace <- c(to.replace,"*")
  }else if(i < 0.1){
    to.replace <- c(to.replace,"+")
  }else{
    to.replace <- c(to.replace,"n.s.")
  }
}

p <- ggplot(data = R5Hz , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_IOS_R5Hz)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), 
                                                                                           axis.text.y = element_text(size=10), 
                                                                                           axis.title.y = element_text(size=10,face="bold"),
                                                                                           axis.title.x =element_blank(), legend.position = "none", 
                                                                                           legend.text = element_text(size=10)) + 
  ylim(c(min(meta2$L_IOS_R5Hz,na.rm = T),max(meta2$L_IOS_R5Hz,na.rm = T) + 0.1)) +
  ylab("R5Hz (kPa/l/s)") +
  scale_x_discrete(labels=c("Healthy", "Mild", "Moderate", "Severe"))+
  scale_fill_manual(name= "Severity grade",labels =c("Healthy", "Mild", "Moderate", "Severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd" )) +
  geom_signif(y_position=max(meta2$L_IOS_R5Hz,na.rm = T) + .05, xmin=c(1), xmax=c(1),annotation=c(to.replace[1]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_R5Hz,na.rm = T) + .05, xmin=c(2), xmax=c(2),annotation=c(to.replace[2]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_R5Hz,na.rm = T) + .05, xmin=c(3), xmax=c(3),annotation=c(to.replace[3]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_R5Hz,na.rm = T) + .05, xmin=c(4), xmax=c(4),annotation=c(to.replace[4]), tip_length=0,textsize = 3.5,linetype = "blank") 

#ggsave(filename = paste0(prefix.plots,"231204_figure1/231204_functional_Boxplot_asthma_severity_R5Hz.pdf"),plot = p,units = "cm",width = 8,height = 8)

3.12 R20Hz

Code
R20Hz <- meta2[!is.na(meta2$L_IOS_R20Hz), ]
summary(R20Hz$L_IOS_R20Hz)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 0.1200  0.2600  0.3200  0.3361  0.3900  0.9000 
Code
fit <- betareg(L_IOS_R20Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = R20Hz,    link = "logit")
summary(fit)

Call:
betareg(formula = L_IOS_R20Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + IL.13 + 
    IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5 + IL.8 + 
    Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + D_AGE + D_SmokingStatus + 
    OCS_YN + ICS_YN, data = R20Hz, link = "logit")

Quantile residuals:
    Min      1Q  Median      3Q     Max 
-2.2083 -0.6231 -0.0878  0.5179  5.6439 

Coefficients (mean model with logit link):
                   Estimate Std. Error z value Pr(>|z|)    
(Intercept)      -0.7579649  0.3558501  -2.130   0.0332 *  
Eotaxin.3         0.0389932  0.0179260   2.175   0.0296 *  
G.CSF            -0.0119745  0.0104145  -1.150   0.2502    
IFN.g             0.0152601  0.0196871   0.775   0.4383    
IL.10             0.0075071  0.0193158   0.389   0.6975    
IL.13            -0.0123203  0.0152103  -0.810   0.4179    
IL.17            -0.0208903  0.0242605  -0.861   0.3892    
IL.1alpha         0.0213444  0.0250933   0.851   0.3950    
IL.1F7            0.0108394  0.0235170   0.461   0.6449    
IL.24            -0.0028418  0.0092985  -0.306   0.7599    
IL.33            -0.0068150  0.0106355  -0.641   0.5217    
IL.4             -0.0357466  0.0226177  -1.580   0.1140    
IL.5              0.0101486  0.0146313   0.694   0.4879    
IL.8              0.0028125  0.0219715   0.128   0.8981    
Periostin         0.0042004  0.0104591   0.402   0.6880    
SCGB1A.1         -0.0399418  0.0178963  -2.232   0.0256 *  
TNF.alpha         0.0227864  0.0266873   0.854   0.3932    
year2018          0.2897514  0.1695418   1.709   0.0874 .  
D_SEX1            0.3279688  0.0528078   6.211 5.28e-10 ***
D_AGE             0.0006364  0.0017275   0.368   0.7126    
D_SmokingStatus2 -0.0795526  0.1029787  -0.773   0.4398    
D_SmokingStatus3 -0.0431323  0.0547966  -0.787   0.4312    
OCS_YN1           0.0811122  0.0863327   0.940   0.3475    
ICS_YN1           0.1168823  0.0700794   1.668   0.0953 .  

Phi coefficients (precision model with identity link):
      Estimate Std. Error z value Pr(>|z|)    
(phi)   28.781      2.449   11.75   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Type of estimator: ML (maximum likelihood)
Log-likelihood: 278.8 on 25 Df
Pseudo R-squared: 0.2449
Number of iterations: 32 (BFGS) + 2 (Fisher scoring) 
Code
confint(fit,level = 0.95)
                        2.5 %       97.5 %
(Intercept)      -1.455418243 -0.060511642
Eotaxin.3         0.003858914  0.074127408
G.CSF            -0.032386500  0.008437514
IFN.g            -0.023325944  0.053846138
IL.10            -0.030351227  0.045365433
IL.13            -0.042131919  0.017491417
IL.17            -0.068440015  0.026659328
IL.1alpha        -0.027837531  0.070526333
IL.1F7           -0.035253125  0.056931999
IL.24            -0.021066465  0.015382937
IL.33            -0.027660200  0.014030184
IL.4             -0.080076392  0.008583231
IL.5             -0.018528179  0.038825474
IL.8             -0.040250755  0.045875778
Periostin        -0.016299037  0.024699918
SCGB1A.1         -0.075017920 -0.004865602
TNF.alpha        -0.029519762  0.075092561
year2018         -0.042544463  0.622047358
D_SEX1            0.224467302  0.431470236
D_AGE            -0.002749550  0.004022276
D_SmokingStatus2 -0.281387206  0.122281930
D_SmokingStatus3 -0.150531645  0.064266986
OCS_YN1          -0.088096866  0.250321235
ICS_YN1          -0.020470808  0.254235432
(phi)            23.981681174 33.580408565
Code
res<-summary(fit)$coefficients$mean
sig <- res[res[,"Pr(>|z|)"]<=0.05,]

Figure 39 Effects over significant covariates in R20Hz

Code
plot(Effect(focal.predictors = rownames(sig)[2] , fit), rug = FALSE,  main="Eotaxin-3\n(Coeff: 0.04; P-value: 0.03)", ylab= "R20Hz (kPa/l/s)",  xlab= "log2(Expression)",rescale.axis=F , ylim=c(0,0.9) )
plot(Effect(focal.predictors = rownames(sig)[2] , fit), rug = FALSE,  main="SCGB1A.1\n(Coeff: -0.04; P-value: 0.03)", ylab= "R20Hz (kPa/l/s)",  xlab= "log2(Expression)",rescale.axis=F , ylim=c(0,0.9) )
(a) Effects for Eotaxin.3
(b) Effects for Eotaxin.3
Figure 39: Effects over significant covariates in R20Hz
WARNING: OCS could not be used because all mild cases are equal to 0. The model needs at least one sample with OCS equal. to 1 to contrast.
Code
fit <- betareg(L_IOS_R20Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + ICS_YN,
               data =  subset(R20Hz, D_ASTHMA_SEVERITYGRADE_SCREEN==1),    link = "logit")
summary(fit)

Call:
betareg(formula = L_IOS_R20Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + IL.13 + 
    IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5 + IL.8 + 
    Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + D_AGE + D_SmokingStatus + 
    ICS_YN, data = subset(R20Hz, D_ASTHMA_SEVERITYGRADE_SCREEN == 1), 
    link = "logit")

Quantile residuals:
    Min      1Q  Median      3Q     Max 
-1.9818 -0.7176  0.1092  0.6317  2.6594 

Coefficients (mean model with logit link):
                  Estimate Std. Error z value Pr(>|z|)    
(Intercept)       0.128904   0.825670   0.156  0.87594    
Eotaxin.3         0.024108   0.033120   0.728  0.46668    
G.CSF             0.008147   0.020754   0.393  0.69465    
IFN.g            -0.022607   0.035098  -0.644  0.51951    
IL.10            -0.067487   0.061823  -1.092  0.27500    
IL.13             0.030550   0.025978   1.176  0.23958    
IL.17             0.069041   0.057808   1.194  0.23235    
IL.1alpha         0.070243   0.054099   1.298  0.19414    
IL.1F7            0.058521   0.066810   0.876  0.38107    
IL.24             0.024317   0.022196   1.096  0.27328    
IL.33            -0.036889   0.020498  -1.800  0.07191 .  
IL.4             -0.081527   0.055043  -1.481  0.13856    
IL.5              0.009105   0.036589   0.249  0.80347    
IL.8             -0.061695   0.048678  -1.267  0.20501    
Periostin         0.029546   0.027417   1.078  0.28120    
SCGB1A.1         -0.101913   0.050070  -2.035  0.04181 *  
TNF.alpha         0.132934   0.066971   1.985  0.04715 *  
year2018          0.031659   0.474852   0.067  0.94684    
D_SEX1            0.533099   0.104546   5.099 3.41e-07 ***
D_AGE             0.005007   0.003560   1.406  0.15960    
D_SmokingStatus2  0.678755   0.233426   2.908  0.00364 ** 
D_SmokingStatus3  0.137254   0.122116   1.124  0.26103    
ICS_YN1           0.032343   0.117062   0.276  0.78233    

Phi coefficients (precision model with identity link):
      Estimate Std. Error z value Pr(>|z|)    
(phi)    70.46      14.44   4.878 1.07e-06 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Type of estimator: ML (maximum likelihood)
Log-likelihood: 69.76 on 24 Df
Pseudo R-squared: 0.6361
Number of iterations: 38 (BFGS) + 2 (Fisher scoring) 
Code
confint(fit,level = 0.95)
                        2.5 %       97.5 %
(Intercept)      -1.489379422  1.747187455
Eotaxin.3        -0.040806107  0.089021179
G.CSF            -0.032529958  0.048823696
IFN.g            -0.091398583  0.046184437
IL.10            -0.188658381  0.053683969
IL.13            -0.020364623  0.081465507
IL.17            -0.044260339  0.182341350
IL.1alpha        -0.035788999  0.176274428
IL.1F7           -0.072424756  0.189466850
IL.24            -0.019187339  0.067821329
IL.33            -0.077063771  0.003285384
IL.4             -0.189408364  0.026354671
IL.5             -0.062607039  0.080817615
IL.8             -0.157101744  0.033711488
Periostin        -0.024191343  0.083282828
SCGB1A.1         -0.200047664 -0.003778429
TNF.alpha         0.001673833  0.264193606
year2018         -0.899034701  0.962352022
D_SEX1            0.328193381  0.738004877
D_AGE            -0.001970540  0.011983672
D_SmokingStatus2  0.221248342  1.136261734
D_SmokingStatus3 -0.102089125  0.376598025
ICS_YN1          -0.197095316  0.261780709
(phi)            42.148556486 98.769396516
Code
res<-summary(fit)$coefficients
#sig <- res[res[,"Pr(>|t|)"]<=0.05,]

##write.csv(x = res,file = paste0(prefix.tables,"231219_figure6_tables/231219_R20Hz_mild.csv"),quote = FALSE)
Code
eff_plot <- Effect(focal.predictors = "SCGB1A.1" , fit, xlevels=list(SCGB1A.1=seq(min(meta2$SCGB1A.1) - 1,max(meta2$SCGB1A.1) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = SCGB1A.1, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = SCGB1A.1, y = L_IOS_R20Hz), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = SCGB1A.1, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "SCGB1A1 (Mild)\n(Coeff: -0.10; P-value: 0.04)",
       x = expression('log'[2] * '(Expression)'),
       y = "R20Hz (kPa/l/s)") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "TNF.alpha" , fit, xlevels=list(TNF.alpha=seq(min(meta2$TNF.alpha) - 1,max(meta2$TNF.alpha) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = TNF.alpha, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = TNF.alpha, y = L_IOS_R20Hz), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = TNF.alpha, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "TNF-a (Mild)\n(Coeff: 0.13; P-value: 0.05)",
       x = expression('log'[2] * '(Expression)'),
       y = "R20Hz (kPa/l/s)") +
  theme_bw()
(a) Effects for SCGB1A.1
(b) Effects for TNF.alpha
Figure 40: Effects over significant covariates in R20Hz (Mild)
Code
eff_plot <- Effect(focal.predictors = "SCGB1A.1" , fit, xlevels=list(SCGB1A.1=seq(min(meta2$SCGB1A.1) - 1,max(meta2$SCGB1A.1) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = SCGB1A.1, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = SCGB1A.1, y = L_IOS_R20Hz), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = SCGB1A.1, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "SCGB1A1 (Mild)\n(Coeff: -0.10; P-value: 0.04)",
       x = expression('log'[2] * '(Expression)'),
       y = "R20Hz (kPa/l/s)") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231219_figure6/231219_R20Hz_SCGB1A1_mild.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "TNF.alpha" , fit, xlevels=list(TNF.alpha=seq(min(meta2$TNF.alpha) - 1,max(meta2$TNF.alpha) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = TNF.alpha, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = TNF.alpha, y = L_IOS_R20Hz), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = TNF.alpha, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "TNF-a (Mild)\n(Coeff: 0.13; P-value: 0.05)",
       x = expression('log'[2] * '(Expression)'),
       y = "R20Hz (kPa/l/s)") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231219_figure6/231219_R20Hz_TNFa_mild.pdf"),plot = p, width = 10,height = 10,units = "cm")
WARNING: OCS could not be used because all mild cases are equal to 0. The model needs at least one sample with OCS equal. to 1 to contrast.
Code
fit <- betareg(L_IOS_R20Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + ICS_YN,
               data =  subset(R20Hz, D_ASTHMA_SEVERITYGRADE_SCREEN==2),    link = "logit")
summary(fit)

Call:
betareg(formula = L_IOS_R20Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + IL.13 + 
    IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5 + IL.8 + 
    Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + D_AGE + D_SmokingStatus + 
    ICS_YN, data = subset(R20Hz, D_ASTHMA_SEVERITYGRADE_SCREEN == 2), 
    link = "logit")

Quantile residuals:
    Min      1Q  Median      3Q     Max 
-2.0742 -0.6565  0.0370  0.4339  3.1928 

Coefficients (mean model with logit link):
                   Estimate Std. Error z value Pr(>|z|)    
(Intercept)       0.8075299  0.6409956   1.260 0.207739    
Eotaxin.3         0.1117255  0.0390661   2.860 0.004238 ** 
G.CSF             0.0145658  0.0173741   0.838 0.401827    
IFN.g            -0.0237133  0.0386717  -0.613 0.539747    
IL.10            -0.0699886  0.0310693  -2.253 0.024280 *  
IL.13            -0.1221413  0.0390181  -3.130 0.001746 ** 
IL.17             0.0289027  0.0547234   0.528 0.597388    
IL.1alpha        -0.0139228  0.0540257  -0.258 0.796633    
IL.1F7            0.1061638  0.0554272   1.915 0.055445 .  
IL.24            -0.0125605  0.0159386  -0.788 0.430662    
IL.33             0.0147312  0.0214475   0.687 0.492178    
IL.4              0.0352480  0.0419824   0.840 0.401138    
IL.5              0.0007128  0.0257684   0.028 0.977932    
IL.8             -0.0235854  0.0333493  -0.707 0.479429    
Periostin        -0.0508636  0.0225006  -2.261 0.023787 *  
SCGB1A.1         -0.0802758  0.0234383  -3.425 0.000615 ***
TNF.alpha         0.0502360  0.0374698   1.341 0.180016    
year2018         -0.4155239  0.3407304  -1.220 0.222651    
D_SEX1            0.1734471  0.0979761   1.770 0.076677 .  
D_AGE            -0.0031015  0.0031251  -0.992 0.320986    
D_SmokingStatus2 -0.3683299  0.2380773  -1.547 0.121839    
D_SmokingStatus3 -0.0640992  0.1008746  -0.635 0.525145    
ICS_YN1           0.0889086  0.0981675   0.906 0.365103    

Phi coefficients (precision model with identity link):
      Estimate Std. Error z value Pr(>|z|)    
(phi)   44.889      7.857   5.713 1.11e-08 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Type of estimator: ML (maximum likelihood)
Log-likelihood: 80.01 on 24 Df
Pseudo R-squared: 0.4481
Number of iterations: 35 (BFGS) + 2 (Fisher scoring) 
Code
confint(fit,level = 0.95)
                        2.5 %       97.5 %
(Intercept)      -0.448798333  2.063858192
Eotaxin.3         0.035157428  0.188293632
G.CSF            -0.019486868  0.048618515
IFN.g            -0.099508368  0.052081820
IL.10            -0.130883258 -0.009093906
IL.13            -0.198615425 -0.045667111
IL.17            -0.078353122  0.136158552
IL.1alpha        -0.119811102  0.091965563
IL.1F7           -0.002471429  0.214799120
IL.24            -0.043799514  0.018678478
IL.33            -0.027305147  0.056767504
IL.4             -0.047035939  0.117531969
IL.5             -0.049792331  0.051217923
IL.8             -0.088948791  0.041778073
Periostin        -0.094963873 -0.006763265
SCGB1A.1         -0.126214076 -0.034337589
TNF.alpha        -0.023203497  0.123675525
year2018         -1.083343217  0.252295486
D_SEX1           -0.018582589  0.365476712
D_AGE            -0.009226615  0.003023658
D_SmokingStatus2 -0.834952844  0.098293038
D_SmokingStatus3 -0.261809793  0.133611398
ICS_YN1          -0.103496066  0.281313364
(phi)            29.490009674 60.288116208
Code
res<-summary(fit)$coefficients
#sig <- res[res[,"Pr(>|t|)"]<=0.05,]

##write.csv(x = res,file = paste0(prefix.tables,"231219_figure6_tables/231219_R20Hz_moderate.csv"),quote = FALSE)

Figure 41 Effects over significant covariates in FDR (Moderate)

Code
eff_plot <- Effect(focal.predictors = "Eotaxin.3" , fit, xlevels=list(Eotaxin.3=seq(min(meta2$Eotaxin.3) - 1,max(meta2$Eotaxin.3) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = Eotaxin.3, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = Eotaxin.3, y = L_IOS_R20Hz), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = Eotaxin.3, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "Eotaxin-3 (Moderate)\n(Coeff: 0.11; P-value: 0.04)",
       x = expression('log'[2] * '(Expression)'),
       y = "R20Hz (kPa/l/s)") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "IL.10" , fit, xlevels=list(IL.10=seq(min(meta2$IL.10) - 1,max(meta2$IL.10) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.10, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.10, y = L_IOS_R20Hz), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.10, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-10 (Moderate)\n(Coeff: -0.07; P-value: 0.02)",
       x = expression('log'[2] * '(Expression)'),
       y = "R20Hz (kPa/l/s)") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "IL.13" , fit, xlevels=list(IL.13=seq(min(meta2$IL.13) - 1,max(meta2$IL.13) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.13, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.13, y = L_IOS_R20Hz), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.13, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-13 (Moderate)\n(Coeff: -0.12; P-value: 0.002)",
       x = expression('log'[2] * '(Expression)'),
       y = "R20Hz (kPa/l/s)") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "Periostin" , fit, xlevels=list(Periostin=seq(min(meta2$Periostin) - 1,max(meta2$Periostin) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = Periostin, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = Periostin, y = L_IOS_R20Hz), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = Periostin, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "POSTN (Moderate)\n(Coeff: -0.05; P-value: 0.02)",
       x = expression('log'[2] * '(Expression)'),
       y = "R20Hz (kPa/l/s)") +
  theme_bw()

eff_plot <- Effect(focal.predictors = "SCGB1A.1" , fit, xlevels=list(SCGB1A.1=seq(min(meta2$SCGB1A.1) - 1,max(meta2$SCGB1A.1) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = SCGB1A.1, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = SCGB1A.1, y = L_IOS_R20Hz), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = SCGB1A.1, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "SCGB1A1 (Moderate)\n(Coeff: -0.08; P-value: 6.2e-04)",
       x = expression('log'[2] * '(Expression)'),
       y = "R20Hz (kPa/l/s)") +
  theme_bw()
(a) Effects for Eotaxin.3
(b) Effects for IL-13
(c) Effects for IL-10
(d) Effects for POSTN
(e) Effects for SCGB1A1
Figure 41: Effects over significant covariates in R20Hz (Moderate)
Code
eff_plot <- Effect(focal.predictors = "Eotaxin.3" , fit, xlevels=list(Eotaxin.3=seq(min(meta2$Eotaxin.3) - 1,max(meta2$Eotaxin.3) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = Eotaxin.3, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = Eotaxin.3, y = L_IOS_R20Hz), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = Eotaxin.3, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "Eotaxin-3 (Moderate)\n(Coeff: 0.11; P-value: 0.04)",
       x = expression('log'[2] * '(Expression)'),
       y = "R20Hz (kPa/l/s)") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231219_figure6/231219_R20Hz_CCL26_moderate.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "IL.10" , fit, xlevels=list(IL.10=seq(min(meta2$IL.10) - 1,max(meta2$IL.10) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.10, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.10, y = L_IOS_R20Hz), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.10, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-10 (Moderate)\n(Coeff: -0.07; P-value: 0.02)",
       x = expression('log'[2] * '(Expression)'),
       y = "R20Hz (kPa/l/s)") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231219_figure6/231219_R20Hz_IL10_moderate.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "IL.13" , fit, xlevels=list(IL.13=seq(min(meta2$IL.13) - 1,max(meta2$IL.13) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.13, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.13, y = L_IOS_R20Hz), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.13, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-13 (Moderate)\n(Coeff: -0.12; P-value: 0.002)",
       x = expression('log'[2] * '(Expression)'),
       y = "R20Hz (kPa/l/s)") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231219_figure6/231219_R20Hz_IL13_moderate.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "Periostin" , fit, xlevels=list(Periostin=seq(min(meta2$Periostin) - 1,max(meta2$Periostin) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = Periostin, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = Periostin, y = L_IOS_R20Hz), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = Periostin, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "POSTN (Moderate)\n(Coeff: -0.05; P-value: 0.02)",
       x = expression('log'[2] * '(Expression)'),
       y = "R20Hz (kPa/l/s)") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231219_figure6/231219_R20Hz_POSTN_moderate.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
eff_plot <- Effect(focal.predictors = "SCGB1A.1" , fit, xlevels=list(SCGB1A.1=seq(min(meta2$SCGB1A.1) - 1,max(meta2$SCGB1A.1) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = SCGB1A.1, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = SCGB1A.1, y = L_IOS_R20Hz), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = SCGB1A.1, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "SCGB1A1 (Moderate)\n(Coeff: -0.08; P-value: 6.2e-04)",
       x = expression('log'[2] * '(Expression)'),
       y = "R20Hz (kPa/l/s)") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231219_figure6/231219_R20Hz_SCGB1A1_moderate.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
fit <- betareg(L_IOS_R20Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
               data =  subset(R20Hz, D_ASTHMA_SEVERITYGRADE_SCREEN==3),    link = "logit")
summary(fit)

Call:
betareg(formula = L_IOS_R20Hz ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + IL.13 + 
    IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5 + IL.8 + 
    Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + D_AGE + D_SmokingStatus + 
    OCS_YN + ICS_YN, data = subset(R20Hz, D_ASTHMA_SEVERITYGRADE_SCREEN == 
    3), link = "logit")

Quantile residuals:
    Min      1Q  Median      3Q     Max 
-2.1572 -0.7005 -0.0957  0.5145  4.1742 

Coefficients (mean model with logit link):
                  Estimate Std. Error z value Pr(>|z|)   
(Intercept)      -1.301634   0.760700  -1.711  0.08706 . 
Eotaxin.3         0.023618   0.033140   0.713  0.47605   
G.CSF            -0.055858   0.018308  -3.051  0.00228 **
IFN.g             0.011720   0.034144   0.343  0.73141   
IL.10             0.027096   0.038153   0.710  0.47758   
IL.13            -0.016924   0.028330  -0.597  0.55026   
IL.17            -0.020204   0.040905  -0.494  0.62136   
IL.1alpha         0.088869   0.046853   1.897  0.05786 . 
IL.1F7           -0.067052   0.043988  -1.524  0.12743   
IL.24            -0.004015   0.015940  -0.252  0.80111   
IL.33            -0.022768   0.019945  -1.142  0.25365   
IL.4             -0.060840   0.041127  -1.479  0.13905   
IL.5              0.007080   0.028499   0.248  0.80381   
IL.8              0.007718   0.055915   0.138  0.89022   
Periostin         0.027209   0.017206   1.581  0.11380   
SCGB1A.1         -0.003503   0.044177  -0.079  0.93680   
TNF.alpha         0.094627   0.059598   1.588  0.11234   
year2018          0.942523   0.306676   3.073  0.00212 **
D_SEX1            0.280249   0.088953   3.151  0.00163 **
D_AGE             0.002705   0.003611   0.749  0.45382   
D_SmokingStatus2  0.078237   0.229312   0.341  0.73297   
D_SmokingStatus3 -0.281988   0.091793  -3.072  0.00213 **
OCS_YN1          -0.047402   0.143425  -0.331  0.74102   
ICS_YN1          -0.023085   0.142697  -0.162  0.87148   

Phi coefficients (precision model with identity link):
      Estimate Std. Error z value Pr(>|z|)    
(phi)   28.727      4.103   7.002 2.53e-12 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Type of estimator: ML (maximum likelihood)
Log-likelihood: 96.89 on 25 Df
Pseudo R-squared: 0.3461
Number of iterations: 33 (BFGS) + 2 (Fisher scoring) 
Code
confint(fit,level = 0.95)
                        2.5 %       97.5 %
(Intercept)      -2.792579005  0.189311625
Eotaxin.3        -0.041335982  0.088572313
G.CSF            -0.091739895 -0.019975765
IFN.g            -0.055201524  0.078641479
IL.10            -0.047682543  0.101874671
IL.13            -0.072450433  0.038602937
IL.17            -0.100375120  0.059968046
IL.1alpha        -0.002961933  0.180700401
IL.1F7           -0.153266943  0.019163508
IL.24            -0.035256648  0.027226016
IL.33            -0.061859300  0.016323466
IL.4             -0.141447794  0.019767250
IL.5             -0.048777432  0.062936979
IL.8             -0.101872663  0.117308398
Periostin        -0.006514495  0.060932843
SCGB1A.1         -0.090088565  0.083082613
TNF.alpha        -0.022183249  0.211436735
year2018          0.341449536  1.543596621
D_SEX1            0.105905316  0.454592818
D_AGE            -0.004372788  0.009782748
D_SmokingStatus2 -0.371207341  0.527680362
D_SmokingStatus3 -0.461899980 -0.102076779
OCS_YN1          -0.328509842  0.233705861
ICS_YN1          -0.302765201  0.256595386
(phi)            20.685746291 36.769034898
Code
res<-summary(fit)$coefficients
#sig <- res[res[,"Pr(>|t|)"]<=0.05,][-1,]

##write.csv(x = res,file = paste0(prefix.tables,"231219_figure6_tables/231219_R20Hz_severe.csv"),quote = FALSE)

Figure 42 Effects over significant covariates in R20Hz (Severe)

Code
eff_plot <- Effect(focal.predictors = "G.CSF" , fit, xlevels=list(G.CSF=seq(min(meta2$G.CSF) - 1,max(meta2$G.CSF) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = G.CSF, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = G.CSF, y = L_IOS_R20Hz), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = G.CSF, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "G-CSF (Severe)\n(Coeff: -0.06; P-value: 0.002)",
       x = expression('log'[2] * '(Expression)'),
       y = "R20Hz (kPa/l/s)") +
  theme_bw()
(a) Effects for G-CSF
Figure 42: Effects over significant covariates in R20Hz (Severe)
Code
eff_plot <- Effect(focal.predictors = "G.CSF" , fit, xlevels=list(G.CSF=seq(min(meta2$G.CSF) - 1,max(meta2$G.CSF) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = G.CSF, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = G.CSF, y = L_IOS_R20Hz), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = G.CSF, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "G-CSF (Severe)\n(Coeff: -0.06; P-value: 0.002)",
       x = expression('log'[2] * '(Expression)'),
       y = "R20Hz (kPa/l/s)") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231219_figure6/231219_R20Hz_GCSF_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
fit2 <- lm(L_IOS_R20Hz ~ D_ASTHMA_SEVERITYGRADE_SCREEN 
           + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
           data = R20Hz)
summary(fit2)

Call:
lm(formula = L_IOS_R20Hz ~ D_ASTHMA_SEVERITYGRADE_SCREEN + year + 
    D_SEX + D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = R20Hz)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.19184 -0.05956 -0.00861  0.04639  0.48889 

Coefficients:
                                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)                     2.648e-01  2.338e-02  11.327  < 2e-16 ***
D_ASTHMA_SEVERITYGRADE_SCREEN1  5.208e-02  1.759e-02   2.961 0.003356 ** 
D_ASTHMA_SEVERITYGRADE_SCREEN2  6.469e-02  1.667e-02   3.880 0.000133 ***
D_ASTHMA_SEVERITYGRADE_SCREEN3  8.414e-02  1.779e-02   4.729 3.72e-06 ***
year2018                        2.367e-06  1.198e-02   0.000 0.999842    
D_SEX1                          6.662e-02  1.117e-02   5.966 8.02e-09 ***
D_AGE                          -2.845e-04  3.897e-04  -0.730 0.465990    
D_SmokingStatus2               -9.647e-03  2.251e-02  -0.429 0.668531    
D_SmokingStatus3               -1.574e-02  1.215e-02  -1.296 0.196285    
OCS_YN1                         9.367e-03  2.227e-02   0.421 0.674429    
ICS_YN1                         1.550e-03  1.648e-02   0.094 0.925156    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.08879 on 257 degrees of freedom
Multiple R-squared:  0.2396,    Adjusted R-squared:   0.21 
F-statistic: 8.097 on 10 and 257 DF,  p-value: 2.318e-11
Code
confint(fit2,level = 0.95)
                                      2.5 %      97.5 %
(Intercept)                     0.218756529 0.310830099
D_ASTHMA_SEVERITYGRADE_SCREEN1  0.017442441 0.086727035
D_ASTHMA_SEVERITYGRADE_SCREEN2  0.031855362 0.097515110
D_ASTHMA_SEVERITYGRADE_SCREEN3  0.049103761 0.119172077
year2018                       -0.023585465 0.023590200
D_SEX1                          0.044632152 0.088613149
D_AGE                          -0.001051967 0.000482904
D_SmokingStatus2               -0.053967413 0.034672536
D_SmokingStatus3               -0.039674106 0.008186402
OCS_YN1                        -0.034492231 0.053225615
ICS_YN1                        -0.030903167 0.034002467
Code
##write.csv(summary(fit2)$coefficients, file=paste0(prefix.tables,"231204_figure1_tables/231204_functional_Boxplot_asthma_severity_R20Hz.csv"))

@r20hz-severity R20Hz value distribution per asthma severity

Code
#pdf(file=paste0(prefix.plots,"_Boxplot_asthma_severity_FVC.pdf"), width=10 , height=10)
ggplot(data = R20Hz , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_IOS_R20Hz)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), axis.text.y = element_text(size=10), axis.title=element_text(size=10,face="bold"), legend.position = "none", legend.text = element_text(size=10))+ ylim(c(min(meta2$L_IOS_R20Hz,na.rm = T),max(meta2$L_IOS_R20Hz,na.rm = T) + 0.1)) +
  xlab("")+
  ylab("R20Hz (kPa/l/s)")+
  scale_x_discrete(labels=c("healthy", "mild", "moderate", "severe"))+ 
  scale_fill_manual(name= "Severity grade",labels =c("healthy", "mild", "moderate", "severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd")) +
  geom_signif(y_position=max(meta2$L_IOS_R20Hz,na.rm = T) + 0.1, xmin=c(1), xmax=c(1),annotation=c("2.16e-24"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_R20Hz,na.rm = T) + 0.1, xmin=c(2), xmax=c(2),annotation=c("3.36e-3"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_R20Hz,na.rm = T) + 0.1, xmin=c(3), xmax=c(3),annotation=c("1.33e-4"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_R20Hz,na.rm = T) + 0.1, xmin=c(4), xmax=c(4),annotation=c("3.72e-6"), tip_length=0,textsize = 2,linetype = "blank")
Figure 43: R20Hz value distribution per asthma severity
Code
to.replace <- c()
for(i in summary(fit2)$coefficients[,4][1:4]){
  if(i < 0.001){
    to.replace <- c(to.replace,"***")
  }else if(i < 0.01){
    to.replace <- c(to.replace,"**")
  }else if(i < 0.05){
    to.replace <- c(to.replace,"*")
  }else if(i < 0.1){
    to.replace <- c(to.replace,"+")
  }else{
    to.replace <- c(to.replace,"n.s.")
  }
}

p <- ggplot(data = R20Hz , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_IOS_R20Hz)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), 
                                                                                           axis.text.y = element_text(size=10), 
                                                                                           axis.title.y = element_text(size=10,face="bold"),
                                                                                           axis.title.x =element_blank(), legend.position = "none", 
                                                                                           legend.text = element_text(size=10)) + 
  ylim(c(min(meta2$L_IOS_R20Hz,na.rm = T),max(meta2$L_IOS_R20Hz,na.rm = T) + 0.1)) +
  ylab("R20Hz (kPa/l/s)") +
  scale_x_discrete(labels=c("Healthy", "Mild", "Moderate", "Severe"))+
  scale_fill_manual(name= "Severity grade",labels =c("Healthy", "Mild", "Moderate", "Severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd" )) +
  geom_signif(y_position=max(meta2$L_IOS_R20Hz,na.rm = T) + .05, xmin=c(1), xmax=c(1),annotation=c(to.replace[1]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_R20Hz,na.rm = T) + .05, xmin=c(2), xmax=c(2),annotation=c(to.replace[2]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_R20Hz,na.rm = T) + .05, xmin=c(3), xmax=c(3),annotation=c(to.replace[3]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_R20Hz,na.rm = T) + .05, xmin=c(4), xmax=c(4),annotation=c(to.replace[4]), tip_length=0,textsize = 3.5,linetype = "blank") 

#ggsave(filename = paste0(prefix.plots,"231204_figure1/231204_functional_Boxplot_asthma_severity_R20Hz.pdf"),plot = p,units = "cm",width = 8,height = 8)

3.13 FDRrel

Code
FDRrel <- meta2[!is.na(meta2$L_IOS_FDRrel), ]
summary(FDRrel$L_IOS_FDRrel)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
-0.6600  0.0300  0.0750  0.1556  0.1761  1.3051 
Code
fit <- lm(L_IOS_FDRrel ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = FDRrel)
summary(fit)

Call:
lm(formula = L_IOS_FDRrel ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = FDRrel)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.62869 -0.10810 -0.02791  0.06604  1.01348 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)  
(Intercept)       0.0159155  0.1841052   0.086   0.9312  
Eotaxin.3         0.0016447  0.0092058   0.179   0.8584  
G.CSF             0.0056095  0.0053899   1.041   0.2990  
IFN.g            -0.0067351  0.0102631  -0.656   0.5123  
IL.10            -0.0066284  0.0099317  -0.667   0.5052  
IL.13             0.0141188  0.0078367   1.802   0.0728 .
IL.17             0.0221252  0.0125651   1.761   0.0795 .
IL.1alpha        -0.0033209  0.0129539  -0.256   0.7979  
IL.1F7           -0.0044093  0.0120946  -0.365   0.7158  
IL.24            -0.0007251  0.0048161  -0.151   0.8805  
IL.33             0.0080074  0.0055188   1.451   0.1481  
IL.4             -0.0090233  0.0117625  -0.767   0.4437  
IL.5              0.0023478  0.0075002   0.313   0.7545  
IL.8              0.0038481  0.0114038   0.337   0.7361  
Periostin         0.0007028  0.0053861   0.130   0.8963  
SCGB1A.1         -0.0041668  0.0094851  -0.439   0.6608  
TNF.alpha        -0.0163354  0.0134978  -1.210   0.2274  
year2018          0.2106835  0.0872687   2.414   0.0165 *
D_SEX1           -0.0230167  0.0271176  -0.849   0.3968  
D_AGE             0.0010799  0.0008938   1.208   0.2281  
D_SmokingStatus2 -0.1162651  0.0528787  -2.199   0.0288 *
D_SmokingStatus3  0.0438044  0.0283809   1.543   0.1240  
OCS_YN1           0.0569168  0.0451647   1.260   0.2088  
ICS_YN1           0.0349277  0.0363695   0.960   0.3378  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.2003 on 244 degrees of freedom
Multiple R-squared:  0.2816,    Adjusted R-squared:  0.2139 
F-statistic: 4.159 on 23 and 244 DF,  p-value: 6.926e-09
Code
confint(fit,level = 0.95)
                        2.5 %       97.5 %
(Intercept)      -0.346722754  0.378553781
Eotaxin.3        -0.016488322  0.019777678
G.CSF            -0.005007264  0.016226190
IFN.g            -0.026950663  0.013480471
IL.10            -0.026191290  0.012934512
IL.13            -0.001317431  0.029555084
IL.17            -0.002624751  0.046875124
IL.1alpha        -0.028836640  0.022194880
IL.1F7           -0.028232384  0.019413878
IL.24            -0.010211406  0.008761306
IL.33            -0.002863124  0.018877931
IL.4             -0.032192272  0.014145679
IL.5             -0.012425634  0.017121291
IL.8             -0.018614369  0.026310490
Periostin        -0.009906443  0.011312118
SCGB1A.1         -0.022849868  0.014516299
TNF.alpha        -0.042922529  0.010251750
year2018          0.038787443  0.382579567
D_SEX1           -0.076431221  0.030397731
D_AGE            -0.000680661  0.002840428
D_SmokingStatus2 -0.220422034 -0.012108093
D_SmokingStatus3 -0.012098397  0.099707241
OCS_YN1          -0.032045638  0.145879140
ICS_YN1          -0.036710541  0.106565955
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]
WARNING: OCS could not be used because all mild cases are equal to 0. The model needs at least one sample with OCS equal. to 1 to contrast.
Code
fit <- lm(L_IOS_FDRrel ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + ICS_YN,
          data = subset(FDRrel, D_ASTHMA_SEVERITYGRADE_SCREEN==1))
summary(fit)

Call:
lm(formula = L_IOS_FDRrel ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + ICS_YN, data = subset(FDRrel, D_ASTHMA_SEVERITYGRADE_SCREEN == 
    1))

Residuals:
      Min        1Q    Median        3Q       Max 
-0.225266 -0.051703  0.003754  0.046784  0.274830 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)  
(Intercept)       0.0360575  0.3686583   0.098   0.9229  
Eotaxin.3         0.0062514  0.0147819   0.423   0.6761  
G.CSF             0.0005879  0.0090492   0.065   0.9487  
IFN.g            -0.0110145  0.0159315  -0.691   0.4960  
IL.10            -0.0518531  0.0275218  -1.884   0.0717 .
IL.13             0.0235160  0.0113915   2.064   0.0500 *
IL.17             0.0482101  0.0252143   1.912   0.0679 .
IL.1alpha        -0.0206686  0.0245201  -0.843   0.4076  
IL.1F7           -0.0049183  0.0296181  -0.166   0.8695  
IL.24            -0.0091470  0.0099047  -0.924   0.3649  
IL.33             0.0092603  0.0090772   1.020   0.3178  
IL.4             -0.0303601  0.0242368  -1.253   0.2224  
IL.5              0.0065434  0.0164488   0.398   0.6943  
IL.8             -0.0225621  0.0216251  -1.043   0.3072  
Periostin         0.0221274  0.0120916   1.830   0.0797 .
SCGB1A.1          0.0171486  0.0223926   0.766   0.4513  
TNF.alpha         0.0287849  0.0294556   0.977   0.3382  
year2018          0.0704421  0.2094166   0.336   0.7395  
D_SEX1           -0.1225000  0.0451940  -2.711   0.0122 *
D_AGE             0.0020352  0.0015736   1.293   0.2082  
D_SmokingStatus2 -0.0452941  0.1046371  -0.433   0.6690  
D_SmokingStatus3 -0.0494472  0.0550125  -0.899   0.3777  
ICS_YN1           0.0042633  0.0521508   0.082   0.9355  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.1129 on 24 degrees of freedom
Multiple R-squared:  0.6241,    Adjusted R-squared:  0.2794 
F-statistic: 1.811 on 22 and 24 DF,  p-value: 0.0794
Code
confint(fit,level = 0.95)
                         2.5 %       97.5 %
(Intercept)      -7.248158e-01  0.796930798
Eotaxin.3        -2.425698e-02  0.036759802
G.CSF            -1.808868e-02  0.019264385
IFN.g            -4.389543e-02  0.021866405
IL.10            -1.086553e-01  0.004949047
IL.13             4.972250e-06  0.047026942
IL.17            -3.829630e-03  0.100249871
IL.1alpha        -7.127569e-02  0.029938469
IL.1F7           -6.604703e-02  0.056210331
IL.24            -2.958933e-02  0.011295275
IL.33            -9.474122e-03  0.027994677
IL.4             -8.038230e-02  0.019662155
IL.5             -2.740515e-02  0.040492049
IL.8             -6.719405e-02  0.022069887
Periostin        -2.828336e-03  0.047083233
SCGB1A.1         -2.906744e-02  0.063364542
TNF.alpha        -3.200844e-02  0.089578272
year2018         -3.617726e-01  0.502656852
D_SEX1           -2.157758e-01 -0.029224199
D_AGE            -1.212465e-03  0.005282938
D_SmokingStatus2 -2.612543e-01  0.170666204
D_SmokingStatus3 -1.629875e-01  0.064093029
ICS_YN1          -1.033707e-01  0.111897273
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]

##write.csv(x = res,file = paste0(prefix.tables,"231219_figure6_tables/231219_FDRrel_mild.csv"),quote = FALSE)

Figure 44 Effects over significant covariates in FDRrel (Mild)

Code
eff_plot <- Effect(focal.predictors = "IL.13" , fit, xlevels=list(IL.13=seq(min(meta2$IL.13) - 1,max(meta2$IL.13) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.13, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.13, y = L_IOS_FDRrel), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.13, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-13 (Mild)\n(Coeff: 0.02; P-value: 0.05)",
       x = expression('log'[2] * '(Expression)'),
       y = "R5Hz-R20Hz/R20Hz") +
  theme_bw()
(a) Effects for IL-13
Figure 44: Effects over significant covariates in FDRrel (Mild)
Code
eff_plot <- Effect(focal.predictors = "IL.13" , fit, xlevels=list(IL.13=seq(min(meta2$IL.13) - 1,max(meta2$IL.13) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.13, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.13, y = L_IOS_FDRrel), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.13, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-13 (Mild)\n(Coeff: 0.02; P-value: 0.05)",
       x = expression('log'[2] * '(Expression)'),
       y = "R5Hz-R20Hz/R20Hz") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231219_figure6/231219_FDRrel_IL13_mild.pdf"),plot = p, width = 10,height = 10,units = "cm")
WARNING: OCS could not be used because all mild cases are equal to 0. The model needs at least one sample with OCS equal. to 1 to contrast.
Code
fit <- lm(L_IOS_FDRrel ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + ICS_YN,
          data = subset(FDRrel, D_ASTHMA_SEVERITYGRADE_SCREEN==2))
summary(fit)

Call:
lm(formula = L_IOS_FDRrel ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + ICS_YN, data = subset(FDRrel, D_ASTHMA_SEVERITYGRADE_SCREEN == 
    2))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.35558 -0.09702 -0.02307  0.06604  0.78819 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)
(Intercept)       0.3200088  0.4940213   0.648    0.521
Eotaxin.3        -0.0014816  0.0300052  -0.049    0.961
G.CSF             0.0015208  0.0132238   0.115    0.909
IFN.g            -0.0128481  0.0298784  -0.430    0.669
IL.10            -0.0196979  0.0240178  -0.820    0.417
IL.13             0.0081452  0.0301551   0.270    0.788
IL.17             0.0623260  0.0425661   1.464    0.151
IL.1alpha        -0.0205547  0.0412757  -0.498    0.621
IL.1F7           -0.0058741  0.0423434  -0.139    0.890
IL.24             0.0175138  0.0122899   1.425    0.162
IL.33             0.0043423  0.0165291   0.263    0.794
IL.4             -0.0144065  0.0317784  -0.453    0.653
IL.5              0.0102247  0.0197319   0.518    0.607
IL.8              0.0042002  0.0254739   0.165    0.870
Periostin        -0.0047742  0.0174124  -0.274    0.785
SCGB1A.1          0.0003121  0.0182858   0.017    0.986
TNF.alpha        -0.0023454  0.0277579  -0.084    0.933
year2018          0.2555899  0.2599984   0.983    0.331
D_SEX1           -0.0117140  0.0749944  -0.156    0.877
D_AGE             0.0001504  0.0024092   0.062    0.951
D_SmokingStatus2 -0.1155317  0.1745725  -0.662    0.512
D_SmokingStatus3  0.0576952  0.0776004   0.743    0.461
ICS_YN1          -0.0730197  0.0755895  -0.966    0.340

Residual standard error: 0.2398 on 41 degrees of freedom
Multiple R-squared:  0.3142,    Adjusted R-squared:  -0.05374 
F-statistic: 0.854 on 22 and 41 DF,  p-value: 0.6472
Code
confint(fit,level = 0.95)
                        2.5 %      97.5 %
(Intercept)      -0.677687394 1.317705076
Eotaxin.3        -0.062078423 0.059115233
G.CSF            -0.025185214 0.028226727
IFN.g            -0.073188688 0.047492504
IL.10            -0.068202767 0.028807016
IL.13            -0.052754337 0.069044641
IL.17            -0.023637990 0.148289905
IL.1alpha        -0.103912689 0.062803262
IL.1F7           -0.091388434 0.079640212
IL.24            -0.007306255 0.042333811
IL.33            -0.029038798 0.037723442
IL.4             -0.078584243 0.049771293
IL.5             -0.029624653 0.050074092
IL.8             -0.047245394 0.055645826
Periostin        -0.039939129 0.030390793
SCGB1A.1         -0.036616782 0.037240927
TNF.alpha        -0.058403725 0.053712874
year2018         -0.269487630 0.780667339
D_SEX1           -0.163168174 0.139740248
D_AGE            -0.004714967 0.005015843
D_SmokingStatus2 -0.468088153 0.237024662
D_SmokingStatus3 -0.099021905 0.214412389
ICS_YN1          -0.225675754 0.079636271
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]

##write.csv(x = res,file = paste0(prefix.tables,"231219_figure6_tables/231219_FDRrel_moderate.csv"),quote = FALSE)
Code
fit <- lm(L_IOS_FDRrel ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = subset(FDRrel, D_ASTHMA_SEVERITYGRADE_SCREEN==3))
summary(fit)

Call:
lm(formula = L_IOS_FDRrel ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = subset(FDRrel, 
    D_ASTHMA_SEVERITYGRADE_SCREEN == 3))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.46965 -0.10925 -0.04272  0.09280  0.64464 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)  
(Intercept)      -0.4034918  0.4611487  -0.875   0.3845  
Eotaxin.3         0.0108240  0.0199656   0.542   0.5894  
G.CSF             0.0161697  0.0111012   1.457   0.1496  
IFN.g            -0.0236011  0.0208169  -1.134   0.2607  
IL.10             0.0016575  0.0228967   0.072   0.9425  
IL.13             0.0046531  0.0173382   0.268   0.7892  
IL.17             0.0339843  0.0248932   1.365   0.1765  
IL.1alpha         0.0231470  0.0284387   0.814   0.4184  
IL.1F7           -0.0237735  0.0267936  -0.887   0.3779  
IL.24            -0.0131859  0.0097488  -1.353   0.1805  
IL.33             0.0287680  0.0122011   2.358   0.0211 *
IL.4             -0.0005999  0.0252823  -0.024   0.9811  
IL.5             -0.0265647  0.0171249  -1.551   0.1253  
IL.8              0.0383103  0.0339284   1.129   0.2626  
Periostin        -0.0015262  0.0103813  -0.147   0.8835  
SCGB1A.1         -0.0147385  0.0269414  -0.547   0.5861  
TNF.alpha        -0.0624566  0.0364799  -1.712   0.0912 .
year2018          0.3139393  0.1858583   1.689   0.0956 .
D_SEX1            0.0051145  0.0539023   0.095   0.9247  
D_AGE             0.0006300  0.0022042   0.286   0.7759  
D_SmokingStatus2 -0.0855873  0.1410312  -0.607   0.5459  
D_SmokingStatus3  0.0762748  0.0557606   1.368   0.1757  
OCS_YN1          -0.1490320  0.0872752  -1.708   0.0921 .
ICS_YN1           0.1524511  0.0868866   1.755   0.0836 .
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.2325 on 71 degrees of freedom
Multiple R-squared:  0.4318,    Adjusted R-squared:  0.2478 
F-statistic: 2.346 on 23 and 71 DF,  p-value: 0.003313
Code
confint(fit,level = 0.95)
                        2.5 %      97.5 %
(Intercept)      -1.322996124 0.516012493
Eotaxin.3        -0.028986323 0.050634244
G.CSF            -0.005965459 0.038304865
IFN.g            -0.065108798 0.017906501
IL.10            -0.043997082 0.047312177
IL.13            -0.029918333 0.039224434
IL.17            -0.015651360 0.083619966
IL.1alpha        -0.033558207 0.079852156
IL.1F7           -0.077198360 0.029651388
IL.24            -0.032624419 0.006252628
IL.33             0.004439662 0.053096408
IL.4             -0.051011263 0.049811563
IL.5             -0.060710923 0.007581438
IL.8             -0.029341109 0.105961624
Periostin        -0.022225855 0.019173510
SCGB1A.1         -0.068458000 0.038981071
TNF.alpha        -0.135195563 0.010282280
year2018         -0.056651694 0.684530234
D_SEX1           -0.102363570 0.112592639
D_AGE            -0.003765092 0.005025079
D_SmokingStatus2 -0.366795566 0.195621010
D_SmokingStatus3 -0.034908606 0.187458184
OCS_YN1          -0.323053758 0.024989814
ICS_YN1          -0.020795751 0.325698039
Code
res<-summary(fit)$coefficients
#sig <- res[res[,"Pr(>|t|)"]<=0.05,][-1,]

##write.csv(x = res,file = paste0(prefix.tables,"231219_figure6_tables/231219_FDRrel_severe.csv"),quote = FALSE)

Figure 45 Effects over significant covariates in FDRrel (Severe)

Code
eff_plot <- Effect(focal.predictors = "IL.33" , fit, xlevels=list(IL.33=seq(min(meta2$IL.33) - 1,max(meta2$IL.33) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
ggplot() +
  geom_line(data = eff_data, aes(x = IL.33, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.33, y = L_IOS_FDRrel), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.33, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-33 (Severe)\n(Coeff: 0.03; P-value: 0.02)",
       x = expression('log'[2] * '(Expression)'),
       y = "R5Hz-R20Hz/R20Hz") +
  theme_bw()
(a) Effects for IL-33
Figure 45: Effects over significant covariates in FDRrel (Severe)
Code
eff_plot <- Effect(focal.predictors = "IL.33" , fit, xlevels=list(IL.33=seq(min(meta2$IL.33) - 1,max(meta2$IL.33) + 1,0.1)))

eff_data <- as.data.frame(eff_plot)

# Create a ggplot with effects plot and data points
p <- ggplot() +
  geom_line(data = eff_data, aes(x = IL.33, y = fit), color = "blue") + 
  geom_point(data = meta2, aes(x = IL.33, y = L_IOS_FDRrel), color = "black", shape = 16) +
  geom_ribbon(data = eff_data, aes(x = IL.33, ymin = lower, ymax = upper), fill = "blue", alpha = 0.08) +
  labs(title = "IL-33 (Severe)\n(Coeff: 0.03; P-value: 0.02)",
       x = expression('log'[2] * '(Expression)'),
       y = "R5Hz-R20Hz/R20Hz") +
  theme_bw()

#ggsave(filename = paste0(prefix.tables,"231219_figure6/231219_FDRrel_IL33_severe.pdf"),plot = p, width = 10,height = 10,units = "cm")
Code
fit2 <- lm(L_IOS_FDRrel ~ D_ASTHMA_SEVERITYGRADE_SCREEN 
           + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
           data = FDRrel)
summary(fit2)

Call:
lm(formula = L_IOS_FDRrel ~ D_ASTHMA_SEVERITYGRADE_SCREEN + year + 
    D_SEX + D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = FDRrel)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.70106 -0.11015 -0.02159  0.04243  1.08716 

Coefficients:
                                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)                    -0.0459146  0.0522401  -0.879   0.3803    
D_ASTHMA_SEVERITYGRADE_SCREEN1 -0.0016950  0.0393102  -0.043   0.9656    
D_ASTHMA_SEVERITYGRADE_SCREEN2  0.0232514  0.0372536   0.624   0.5331    
D_ASTHMA_SEVERITYGRADE_SCREEN3  0.0971886  0.0397549   2.445   0.0152 *  
year2018                        0.1711105  0.0267662   6.393 7.63e-10 ***
D_SEX1                         -0.0199560  0.0249537  -0.800   0.4246    
D_AGE                           0.0010523  0.0008708   1.208   0.2280    
D_SmokingStatus2               -0.1136381  0.0502920  -2.260   0.0247 *  
D_SmokingStatus3                0.0515500  0.0271548   1.898   0.0588 .  
OCS_YN1                        -0.0006026  0.0497688  -0.012   0.9903    
ICS_YN1                         0.0140982  0.0368257   0.383   0.7022    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.1984 on 257 degrees of freedom
Multiple R-squared:  0.2573,    Adjusted R-squared:  0.2285 
F-statistic: 8.906 on 10 and 257 DF,  p-value: 1.467e-12
Code
confint(fit2,level = 0.95)
                                       2.5 %       97.5 %
(Intercept)                    -0.1487878269  0.056958531
D_ASTHMA_SEVERITYGRADE_SCREEN1 -0.0791062416  0.075716178
D_ASTHMA_SEVERITYGRADE_SCREEN2 -0.0501097914  0.096612596
D_ASTHMA_SEVERITYGRADE_SCREEN3  0.0189017348  0.175475450
year2018                        0.1184014072  0.223819514
D_SEX1                         -0.0690956876  0.029183655
D_AGE                          -0.0006625636  0.002767238
D_SmokingStatus2               -0.2126749303 -0.014601296
D_SmokingStatus3               -0.0019242409  0.105024206
OCS_YN1                        -0.0986091869  0.097403929
ICS_YN1                        -0.0584204751  0.086616781
Code
##write.csv(summary(fit2)$coefficients, file=paste0(prefix.tables,"231204_figure1_tables/231204_functional_Boxplot_asthma_severity_FDRrel.csv"))

@fdrel-severity FDRel value distribution per asthma severity

Code
#pdf(file=paste0(prefix.plots,"_Boxplot_asthma_severity_FVC.pdf"), width=10 , height=10)
ggplot(data = FDRrel , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_IOS_FDRrel)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), axis.text.y = element_text(size=10), axis.title=element_text(size=10,face="bold"), legend.position = "none", legend.text = element_text(size=10))+ ylim(c(min(meta2$L_IOS_FDRrel,na.rm = T),max(meta2$L_IOS_FDRrel,na.rm = T) + 0.1)) +
  xlab("")+
  ylab("R5Hz-R20Hz/R20Hz")+
  scale_x_discrete(labels=c("healthy", "mild", "moderate", "severe"))+ 
  scale_fill_manual(name= "Severity grade",labels =c("healthy", "mild", "moderate", "severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd")) +
  geom_signif(y_position=max(meta2$L_IOS_FDRrel,na.rm = T) + 0.1, xmin=c(1), xmax=c(1),annotation=c("0.38"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_FDRrel,na.rm = T) + 0.1, xmin=c(2), xmax=c(2),annotation=c("0.97"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_FDRrel,na.rm = T) + 0.1, xmin=c(3), xmax=c(3),annotation=c("0.53"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_FDRrel,na.rm = T) + 0.1, xmin=c(4), xmax=c(4),annotation=c("0.02"), tip_length=0,textsize = 2,linetype = "blank")
Figure 46: FDRel value distribution per asthma severity
Code
to.replace <- c()
for(i in summary(fit2)$coefficients[,4][1:4]){
  if(i < 0.001){
    to.replace <- c(to.replace,"***")
  }else if(i < 0.01){
    to.replace <- c(to.replace,"**")
  }else if(i < 0.05){
    to.replace <- c(to.replace,"*")
  }else if(i < 0.1){
    to.replace <- c(to.replace,"+")
  }else{
    to.replace <- c(to.replace,"n.s.")
  }
}

p <- ggplot(data = FDRrel , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_IOS_FDRrel)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), 
                                                                                           axis.text.y = element_text(size=10), 
                                                                                           axis.title.y = element_text(size=10,face="bold"),
                                                                                           axis.title.x =element_blank(), legend.position = "none", 
                                                                                           legend.text = element_text(size=10)) + 
  ylim(c(min(meta2$L_IOS_FDRrel,na.rm = T),max(meta2$L_IOS_FDRrel,na.rm = T) + 0.1)) +
  ylab("R5Hz-R20Hz/R20Hz") +
  scale_x_discrete(labels=c("Healthy", "Mild", "Moderate", "Severe"))+
  scale_fill_manual(name= "Severity grade",labels =c("Healthy", "Mild", "Moderate", "Severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd" )) +
  geom_signif(y_position=max(meta2$L_IOS_FDRrel,na.rm = T) + .05, xmin=c(1), xmax=c(1),annotation=c(to.replace[1]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_FDRrel,na.rm = T) + .05, xmin=c(2), xmax=c(2),annotation=c(to.replace[2]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_FDRrel,na.rm = T) + .05, xmin=c(3), xmax=c(3),annotation=c(to.replace[3]), tip_length=0,textsize = 3.5,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_FDRrel,na.rm = T) + .05, xmin=c(4), xmax=c(4),annotation=c(to.replace[4]), tip_length=0,textsize = 3.5,linetype = "blank") 

#ggsave(filename = paste0(prefix.plots,"231204_figure1/231204_functional_Boxplot_asthma_severity_FDRrel.pdf"),plot = p,units = "cm",width = 8,height = 8)

3.14 FDRabs

Code
FDR <- meta2[!is.na(meta2$L_IOS_FDRabs), ]
summary(FDR$L_IOS_FDRabs)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
-0.2000  0.0400  0.0900  0.1232  0.1700  0.7700 
Code
fit <- lm(L_IOS_FDRabs ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = FDR)
summary(fit)

Call:
lm(formula = L_IOS_FDRabs ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = FDR)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.26435 -0.07245 -0.01833  0.05048  0.61093 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)  
(Intercept)       1.336e-02  1.083e-01   0.123   0.9019  
Eotaxin.3         2.129e-03  5.413e-03   0.393   0.6945  
G.CSF             5.282e-05  3.169e-03   0.017   0.9867  
IFN.g             2.391e-03  6.035e-03   0.396   0.6924  
IL.10            -8.568e-03  5.840e-03  -1.467   0.1436  
IL.13            -5.501e-03  4.608e-03  -1.194   0.2337  
IL.17             4.224e-03  7.389e-03   0.572   0.5681  
IL.1alpha        -5.753e-03  7.617e-03  -0.755   0.4509  
IL.1F7            5.766e-03  7.112e-03   0.811   0.4183  
IL.24            -5.294e-05  2.832e-03  -0.019   0.9851  
IL.33            -9.372e-04  3.245e-03  -0.289   0.7730  
IL.4             -1.420e-03  6.917e-03  -0.205   0.8375  
IL.5              5.448e-03  4.410e-03   1.235   0.2179  
IL.8              6.127e-03  6.706e-03   0.914   0.3618  
Periostin         3.497e-03  3.167e-03   1.104   0.2706  
SCGB1A.1         -7.590e-03  5.578e-03  -1.361   0.1748  
TNF.alpha        -3.684e-03  7.937e-03  -0.464   0.6430  
year2018          1.636e-02  5.132e-02   0.319   0.7501  
D_SEX1            1.194e-02  1.595e-02   0.749   0.4548  
D_AGE             1.097e-03  5.256e-04   2.087   0.0379 *
D_SmokingStatus2 -2.068e-02  3.109e-02  -0.665   0.5067  
D_SmokingStatus3  1.499e-02  1.669e-02   0.898   0.3700  
OCS_YN1           2.847e-02  2.656e-02   1.072   0.2848  
ICS_YN1           2.549e-02  2.139e-02   1.192   0.2345  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.1178 on 244 degrees of freedom
Multiple R-squared:  0.1307,    Adjusted R-squared:  0.04881 
F-statistic: 1.596 on 23 and 244 DF,  p-value: 0.04496
Code
confint(fit,level = 0.95)
                         2.5 %      97.5 %
(Intercept)      -1.998810e-01 0.226608615
Eotaxin.3        -8.534071e-03 0.012791685
G.CSF            -6.190208e-03 0.006295853
IFN.g            -9.496986e-03 0.014278024
IL.10            -2.007167e-02 0.002935758
IL.13            -1.457837e-02 0.003575820
IL.17            -1.033023e-02 0.018777540
IL.1alpha        -2.075688e-02 0.009251549
IL.1F7           -8.242621e-03 0.019775153
IL.24            -5.631273e-03 0.005525387
IL.33            -7.329494e-03 0.005455055
IL.4             -1.504414e-02 0.012204293
IL.5             -3.239413e-03 0.014135278
IL.8             -7.082011e-03 0.019335476
Periostin        -2.741668e-03 0.009735634
SCGB1A.1         -1.857614e-02 0.003396551
TNF.alpha        -1.931774e-02 0.011950717
year2018         -8.471762e-02 0.117444934
D_SEX1           -1.947205e-02 0.043347343
D_AGE             6.151264e-05 0.002132044
D_SmokingStatus2 -8.192665e-02 0.040569690
D_SmokingStatus3 -1.788348e-02 0.047862397
OCS_YN1          -2.384330e-02 0.080783088
ICS_YN1          -1.663483e-02 0.067617079
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]
WARNING: OCS could not be used because all mild cases are equal to 0. The model needs at least one sample with OCS equal. to 1 to contrast.
Code
fit <- lm(L_IOS_FDRabs ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + ICS_YN,
          data = subset(FDR, D_ASTHMA_SEVERITYGRADE_SCREEN==1))
summary(fit)

Call:
lm(formula = L_IOS_FDRabs ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + ICS_YN, data = subset(FDR, D_ASTHMA_SEVERITYGRADE_SCREEN == 
    1))

Residuals:
      Min        1Q    Median        3Q       Max 
-0.118379 -0.036422 -0.004225  0.025353  0.184939 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)
(Intercept)       2.150e-01  2.678e-01   0.803    0.430
Eotaxin.3         3.003e-03  1.074e-02   0.280    0.782
G.CSF             5.887e-03  6.573e-03   0.896    0.379
IFN.g             5.924e-03  1.157e-02   0.512    0.613
IL.10            -1.018e-02  1.999e-02  -0.509    0.615
IL.13            -1.111e-03  8.274e-03  -0.134    0.894
IL.17            -5.318e-03  1.831e-02  -0.290    0.774
IL.1alpha         6.976e-03  1.781e-02   0.392    0.699
IL.1F7           -5.260e-03  2.151e-02  -0.245    0.809
IL.24            -7.065e-04  7.194e-03  -0.098    0.923
IL.33            -3.129e-03  6.593e-03  -0.475    0.639
IL.4              2.438e-03  1.760e-02   0.138    0.891
IL.5              5.392e-03  1.195e-02   0.451    0.656
IL.8             -2.199e-02  1.571e-02  -1.400    0.174
Periostin         7.596e-03  8.783e-03   0.865    0.396
SCGB1A.1          2.615e-03  1.626e-02   0.161    0.874
TNF.alpha         1.513e-02  2.140e-02   0.707    0.486
year2018         -1.561e-02  1.521e-01  -0.103    0.919
D_SEX1           -1.242e-02  3.283e-02  -0.379    0.708
D_AGE             9.333e-04  1.143e-03   0.817    0.422
D_SmokingStatus2  4.745e-02  7.600e-02   0.624    0.538
D_SmokingStatus3  3.932e-05  3.996e-02   0.001    0.999
ICS_YN1           1.604e-02  3.788e-02   0.423    0.676

Residual standard error: 0.082 on 24 degrees of freedom
Multiple R-squared:  0.3234,    Adjusted R-squared:  -0.2968 
F-statistic: 0.5215 on 22 and 24 DF,  p-value: 0.9353
Code
confint(fit,level = 0.95)
                        2.5 %      97.5 %
(Intercept)      -0.337684649 0.767633182
Eotaxin.3        -0.019156984 0.025162439
G.CSF            -0.007679072 0.019452260
IFN.g            -0.017958770 0.029807219
IL.10            -0.051439627 0.031076711
IL.13            -0.018188430 0.015965890
IL.17            -0.043116520 0.032481432
IL.1alpha        -0.029782047 0.043734668
IL.1F7           -0.049660950 0.039140452
IL.24            -0.015554735 0.014141718
IL.33            -0.016737020 0.010478372
IL.4             -0.033895970 0.038771134
IL.5             -0.019266261 0.030050743
IL.8             -0.054410578 0.010426119
Periostin        -0.010530993 0.025722182
SCGB1A.1         -0.030953526 0.036184269
TNF.alpha        -0.029030604 0.059283674
year2018         -0.329551972 0.298324721
D_SEX1           -0.080175674 0.055325720
D_AGE            -0.001425661 0.003292263
D_SmokingStatus2 -0.109413971 0.204310691
D_SmokingStatus3 -0.082430422 0.082509069
ICS_YN1          -0.062139071 0.094220397
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]
WARNING: OCS could not be used because all mild cases are equal to 0. The model needs at least one sample with OCS equal. to 1 to contrast.
Code
fit <- lm(L_IOS_FDRabs ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + ICS_YN,
          data = subset(FDR, D_ASTHMA_SEVERITYGRADE_SCREEN==2))
summary(fit)

Call:
lm(formula = L_IOS_FDRabs ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + ICS_YN, data = subset(FDR, D_ASTHMA_SEVERITYGRADE_SCREEN == 
    2))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.22604 -0.06680 -0.00534  0.04433  0.44186 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)  
(Intercept)       3.058e-01  2.710e-01   1.128   0.2657  
Eotaxin.3         8.888e-03  1.646e-02   0.540   0.5922  
G.CSF             1.168e-03  7.255e-03   0.161   0.8729  
IFN.g            -7.122e-05  1.639e-02  -0.004   0.9966  
IL.10            -3.540e-02  1.318e-02  -2.687   0.0104 *
IL.13            -1.423e-02  1.654e-02  -0.860   0.3946  
IL.17             3.624e-02  2.335e-02   1.552   0.1284  
IL.1alpha        -1.593e-02  2.264e-02  -0.704   0.4857  
IL.1F7            1.424e-02  2.323e-02   0.613   0.5432  
IL.24             6.512e-03  6.742e-03   0.966   0.3398  
IL.33             7.731e-05  9.068e-03   0.009   0.9932  
IL.4             -1.102e-03  1.743e-02  -0.063   0.9499  
IL.5              1.109e-02  1.082e-02   1.024   0.3117  
IL.8             -1.542e-03  1.398e-02  -0.110   0.9127  
Periostin        -7.486e-03  9.552e-03  -0.784   0.4377  
SCGB1A.1         -8.255e-03  1.003e-02  -0.823   0.4153  
TNF.alpha         6.669e-03  1.523e-02   0.438   0.6637  
year2018          1.295e-04  1.426e-01   0.001   0.9993  
D_SEX1           -2.296e-02  4.114e-02  -0.558   0.5798  
D_AGE             1.182e-03  1.322e-03   0.894   0.3764  
D_SmokingStatus2 -1.118e-02  9.577e-02  -0.117   0.9077  
D_SmokingStatus3  1.216e-02  4.257e-02   0.286   0.7765  
ICS_YN1          -3.660e-02  4.147e-02  -0.883   0.3826  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.1315 on 41 degrees of freedom
Multiple R-squared:  0.3221,    Adjusted R-squared:  -0.04159 
F-statistic: 0.8856 on 22 and 41 DF,  p-value: 0.6112
Code
confint(fit,level = 0.95)
                        2.5 %       97.5 %
(Intercept)      -0.241519110  0.853160451
Eotaxin.3        -0.024355630  0.042131650
G.CSF            -0.013483338  0.015818647
IFN.g            -0.033174292  0.033031849
IL.10            -0.062011240 -0.008791321
IL.13            -0.047642180  0.019177182
IL.17            -0.010919071  0.083401198
IL.1alpha        -0.061662678  0.029798298
IL.1F7           -0.032670183  0.061156754
IL.24            -0.007104633  0.020128088
IL.33            -0.018235692  0.018390315
IL.4             -0.036309788  0.034106526
IL.5             -0.010773467  0.032949555
IL.8             -0.029765376  0.026681121
Periostin        -0.026777500  0.011805751
SCGB1A.1         -0.028513965  0.012004643
TNF.alpha        -0.024084343  0.037423230
year2018         -0.287929949  0.288188884
D_SEX1           -0.106049027  0.060127634
D_AGE            -0.001487249  0.003851108
D_SmokingStatus2 -0.204591516  0.182235937
D_SmokingStatus3 -0.073812937  0.098138255
ICS_YN1          -0.120347360  0.047147927
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,]

Figure 47 Effects over significant covariates in FDR (Moderate)

Code
plot(Effect(focal.predictors = "IL.10" , fit), rug = FALSE,  main="IL-10 (Severe)\n(Coeff: -0.04; P-value: 0.01)", ylab= "R5Hz-R20Hz",  xlab= "log2(Expression)",rescale.axis=F, ylim= c(-0.5,1))#
(a) Effects for IL-10
Figure 47: Effects over significant covariates in FDR (Moderate)
Code
fit <- lm(L_IOS_FDRabs ~ Eotaxin.3 + G.CSF + IFN.g + IL.10+ IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + IL.5+ IL.8 + Periostin + SCGB1A.1 + TNF.alpha
                       + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
          data = subset(FDR, D_ASTHMA_SEVERITYGRADE_SCREEN==3))
summary(fit)

Call:
lm(formula = L_IOS_FDRabs ~ Eotaxin.3 + G.CSF + IFN.g + IL.10 + 
    IL.13 + IL.17 + IL.1alpha + IL.1F7 + IL.24 + IL.33 + IL.4 + 
    IL.5 + IL.8 + Periostin + SCGB1A.1 + TNF.alpha + year + D_SEX + 
    D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = subset(FDR, 
    D_ASTHMA_SEVERITYGRADE_SCREEN == 3))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.23363 -0.07365 -0.00972  0.07601  0.41887 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)  
(Intercept)      -0.373681   0.269762  -1.385   0.1703  
Eotaxin.3        -0.006906   0.011679  -0.591   0.5562  
G.CSF            -0.009654   0.006494  -1.487   0.1416  
IFN.g            -0.006041   0.012177  -0.496   0.6213  
IL.10            -0.002451   0.013394  -0.183   0.8553  
IL.13            -0.014886   0.010142  -1.468   0.1466  
IL.17             0.013028   0.014562   0.895   0.3740  
IL.1alpha         0.008075   0.016636   0.485   0.6289  
IL.1F7           -0.006669   0.015674  -0.425   0.6718  
IL.24            -0.002934   0.005703  -0.514   0.6085  
IL.33             0.006061   0.007137   0.849   0.3986  
IL.4             -0.004160   0.014790  -0.281   0.7793  
IL.5             -0.001041   0.010018  -0.104   0.9175  
IL.8              0.046549   0.019847   2.345   0.0218 *
Periostin         0.009239   0.006073   1.521   0.1326  
SCGB1A.1         -0.021413   0.015760  -1.359   0.1785  
TNF.alpha        -0.019181   0.021340  -0.899   0.3718  
year2018          0.145295   0.108723   1.336   0.1857  
D_SEX1            0.036691   0.031532   1.164   0.2485  
D_AGE             0.001522   0.001289   1.180   0.2418  
D_SmokingStatus2  0.076315   0.082500   0.925   0.3581  
D_SmokingStatus3  0.002825   0.032619   0.087   0.9312  
OCS_YN1          -0.106940   0.051054  -2.095   0.0398 *
ICS_YN1           0.061159   0.050827   1.203   0.2329  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.136 on 71 degrees of freedom
Multiple R-squared:  0.2255,    Adjusted R-squared:  -0.02539 
F-statistic: 0.8988 on 23 and 71 DF,  p-value: 0.5994
Code
confint(fit,level = 0.95)
                        2.5 %       97.5 %
(Intercept)      -0.911572019  0.164209317
Eotaxin.3        -0.030193881  0.016382475
G.CSF            -0.022602406  0.003294802
IFN.g            -0.030322519  0.018239684
IL.10            -0.029158294  0.024255701
IL.13            -0.035109718  0.005337346
IL.17            -0.016007587  0.042064049
IL.1alpha        -0.025095981  0.041246695
IL.1F7           -0.037921265  0.024583588
IL.24            -0.014305031  0.008437224
IL.33            -0.008170307  0.020292865
IL.4             -0.033649646  0.025329586
IL.5             -0.021015613  0.018933981
IL.8              0.006973953  0.086123204
Periostin        -0.002869781  0.021347977
SCGB1A.1         -0.052837938  0.010011658
TNF.alpha        -0.061731381  0.023370095
year2018         -0.071493142  0.362082686
D_SEX1           -0.026181654  0.099563204
D_AGE            -0.001049190  0.004092875
D_SmokingStatus2 -0.088186232  0.240815628
D_SmokingStatus3 -0.062214798  0.067865094
OCS_YN1          -0.208739395 -0.005141230
ICS_YN1          -0.040186338  0.162505236
Code
res<-summary(fit)$coefficients
sig <- res[res[,"Pr(>|t|)"]<=0.05,][-1,]

Figure 48 Effects over significant covariates in FDR (Severe)

Code
plot(Effect(focal.predictors = "IL.8" , fit), rug = FALSE,  main="IL-8 (Severe)\n(Coeff: 0.05; P-value: 0.02)", ylab= "R5Hz-R20Hz",  xlab= "log2(Expression)",rescale.axis=F, ylim= c(-0.5,1))#
(a) Effects for IL-8
Figure 48: Effects over significant covariates in fdr (Severe)
Code
fit2 <- lm(L_IOS_FDRabs ~ D_ASTHMA_SEVERITYGRADE_SCREEN 
           + year+D_SEX+D_AGE + D_SmokingStatus + OCS_YN + ICS_YN,
           data = FDR)
summary(fit2)

Call:
lm(formula = L_IOS_FDRabs ~ D_ASTHMA_SEVERITYGRADE_SCREEN + year + 
    D_SEX + D_AGE + D_SmokingStatus + OCS_YN + ICS_YN, data = FDR)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.24370 -0.06699 -0.01098  0.03925  0.64221 

Coefficients:
                                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)                    -0.0159881  0.0285985  -0.559 0.576612    
D_ASTHMA_SEVERITYGRADE_SCREEN1  0.0650734  0.0215201   3.024 0.002749 ** 
D_ASTHMA_SEVERITYGRADE_SCREEN2  0.0780273  0.0203942   3.826 0.000164 ***
D_ASTHMA_SEVERITYGRADE_SCREEN3  0.1428394  0.0217635   6.563 2.89e-10 ***
year2018                        0.0246761  0.0146530   1.684 0.093389 .  
D_SEX1                          0.0040010  0.0136607   0.293 0.769846    
D_AGE                           0.0008592  0.0004767   1.802 0.072682 .  
D_SmokingStatus2               -0.0093750  0.0275320  -0.341 0.733747    
D_SmokingStatus3                0.0061443  0.0148657   0.413 0.679716    
OCS_YN1                        -0.0268485  0.0272456  -0.985 0.325341    
ICS_YN1                         0.0008342  0.0201600   0.041 0.967025    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.1086 on 257 degrees of freedom
Multiple R-squared:  0.2212,    Adjusted R-squared:  0.1909 
F-statistic: 7.298 on 10 and 257 DF,  p-value: 3.684e-10
Code
confint(fit2,level = 0.95)
                                       2.5 %      97.5 %
(Intercept)                    -7.230527e-02 0.040329138
D_ASTHMA_SEVERITYGRADE_SCREEN1  2.269520e-02 0.107451656
D_ASTHMA_SEVERITYGRADE_SCREEN2  3.786618e-02 0.118188331
D_ASTHMA_SEVERITYGRADE_SCREEN3  9.998182e-02 0.185697007
year2018                       -4.179080e-03 0.053531327
D_SEX1                         -2.290014e-02 0.030902196
D_AGE                          -7.962371e-05 0.001797997
D_SmokingStatus2               -6.359205e-02 0.044841979
D_SmokingStatus3               -2.312978e-02 0.035418396
OCS_YN1                        -8.050153e-02 0.026804484
ICS_YN1                        -3.886558e-02 0.040534050

@fdr-severity FDR value distribution per asthma severity

Code
#pdf(file=paste0(prefix.plots,"_Boxplot_asthma_severity_FVC.pdf"), width=10 , height=10)
ggplot(data = FDR , aes(x =D_ASTHMA_SEVERITYGRADE_SCREEN , y =L_IOS_FDRabs)) + 
  geom_boxplot(aes(fill = D_ASTHMA_SEVERITYGRADE_SCREEN), width = 0.4)+ theme_bw() + theme(axis.text.x = element_text(size=10), axis.text.y = element_text(size=10), axis.title=element_text(size=10,face="bold"), legend.position = "none", legend.text = element_text(size=10))+ ylim(c(min(meta2$L_IOS_FDRabs,na.rm = T),max(meta2$L_IOS_FDRabs,na.rm = T) + 0.1)) +
  xlab("")+
  ylab("R5Hz-R20Hz")+
  scale_x_discrete(labels=c("healthy", "mild", "moderate", "severe"))+ 
  scale_fill_manual(name= "Severity grade",labels =c("healthy", "mild", "moderate", "severe"), values=c("#eff3ff","#bdd7e7", "#6baed6", "#3182bd")) +
  geom_signif(y_position=max(meta2$L_IOS_FDRabs,na.rm = T) + 0.1, xmin=c(1), xmax=c(1),annotation=c("4.91e-8"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_FDRabs,na.rm = T) + 0.1, xmin=c(2), xmax=c(2),annotation=c("7.54e-4"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_FDRabs,na.rm = T) + 0.1, xmin=c(3), xmax=c(3),annotation=c("1.42e-5"), tip_length=0,textsize = 2,linetype = "blank") +
  geom_signif(y_position=max(meta2$L_IOS_FDRabs,na.rm = T) + 0.1, xmin=c(4), xmax=c(4),annotation=c("1.75e-10"), tip_length=0,textsize = 2,linetype = "blank")
Figure 49: FDR value distribution per asthma severity

4 Session info

Code
sessionInfo()
R version 4.4.1 (2024-06-14 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 11 x64 (build 22631)

Matrix products: default


locale:
[1] LC_COLLATE=German_Germany.utf8  LC_CTYPE=German_Germany.utf8   
[3] LC_MONETARY=German_Germany.utf8 LC_NUMERIC=C                   
[5] LC_TIME=German_Germany.utf8    

time zone: Europe/Berlin
tzcode source: internal

attached base packages:
[1] grid      stats     graphics  grDevices utils     datasets  methods  
[8] base     

other attached packages:
 [1] betareg_3.2-0         ggsignif_0.6.4        sciplot_1.2-0        
 [4] gridExtra_2.3         DescTools_0.99.55     MASS_7.3-61          
 [7] AER_1.2-12            survival_3.7-0        sandwich_3.1-0       
[10] lmtest_0.9-40         zoo_1.8-12            car_3.1-2            
[13] effects_4.2-2         carData_3.0-5         ordinal_2023.12-4.1  
[16] Rtsne_0.17            M3C_1.26.0            ComplexHeatmap_2.20.0
[19] missRanger_2.6.0      limma_3.60.4          openxlsx_4.2.6.1     
[22] RColorBrewer_1.1-3    ggplot2_3.5.1         dplyr_1.1.4          
[25] DirichletReg_0.7-1    Formula_1.2-5        

loaded via a namespace (and not attached):
  [1] DBI_1.2.3           gld_2.6.6           readxl_1.4.3       
  [4] rlang_1.1.4         magrittr_2.0.3      clue_0.3-65        
  [7] GetoptLong_1.0.5    e1071_1.7-14        matrixStats_1.3.0  
 [10] compiler_4.4.1      flexmix_2.3-19      png_0.1-8          
 [13] vctrs_0.6.5         pkgconfig_2.0.3     shape_1.4.6.1      
 [16] crayon_1.5.3        fastmap_1.2.0       labeling_0.4.3     
 [19] utf8_1.2.4          rmarkdown_2.28      nloptr_2.1.1       
 [22] miscTools_0.6-28    modeltools_0.2-23   xfun_0.47          
 [25] jsonlite_1.8.8      parallel_4.4.1      cluster_2.1.6      
 [28] R6_2.5.1            stringi_1.8.4       reticulate_1.38.0  
 [31] boot_1.3-30         estimability_1.5.1  cellranger_1.1.0   
 [34] numDeriv_2016.8-1.1 Rcpp_1.0.13         iterators_1.0.14   
 [37] knitr_1.48          snow_0.4-4          IRanges_2.38.1     
 [40] Matrix_1.7-0        splines_4.4.1       nnet_7.3-19        
 [43] tidyselect_1.2.1    rstudioapi_0.16.0   abind_1.4-5        
 [46] yaml_2.3.10         doParallel_1.0.17   maxLik_1.5-2.1     
 [49] codetools_0.2-20    lattice_0.22-6      tibble_3.2.1       
 [52] withr_3.0.1         askpass_1.2.0       evaluate_0.24.0    
 [55] proxy_0.4-27        survey_4.4-2        zip_2.3.1          
 [58] circlize_0.4.16     pillar_1.9.0        foreach_1.5.2      
 [61] stats4_4.4.1        insight_0.20.3      generics_0.1.3     
 [64] S4Vectors_0.42.1    rootSolve_1.8.2.4   munsell_0.5.1      
 [67] scales_1.3.0        minqa_1.2.8         class_7.3-22       
 [70] glue_1.7.0          lmom_3.0            tools_4.4.1        
 [73] data.table_1.15.4   lme4_1.1-35.5       RSpectra_0.16-2    
 [76] Exact_3.3           mvtnorm_1.2-6       mitools_2.4        
 [79] matrixcalc_1.0-6    umap_0.2.10.0       colorspace_2.1-1   
 [82] nlme_3.1-166        cli_3.6.3           expm_1.0-0         
 [85] fansi_1.0.6         corpcor_1.6.10      doSNOW_1.0.20      
 [88] gtable_0.3.5        digest_0.6.37       BiocGenerics_0.50.0
 [91] ucminf_1.2.2        farver_2.1.2        rjson_0.2.22       
 [94] htmlwidgets_1.6.4   htmltools_0.5.8.1   lifecycle_1.0.4    
 [97] httr_1.4.7          GlobalOptions_0.1.2 statmod_1.5.0      
[100] openssl_2.2.1